zoukankan      html  css  js  c++  java
  • 使用ASP.NET MVC3+EF+Jquery制作文字直播系统(三)

    上一篇简单的实现了一下登录的功能,这一篇首先把后台的框架撘一撘。

    搭框架

    还是使用上文提到的模板,该模板使用frameset框架,关于在ASP.NET MVC下如何使用frameset框架,我推荐大家看一篇文章在ASP.NET MVC下使用frameset框架!

    上一篇中,我们在View文件夹下新建了一个Admin文件夹,所以,我们先新建一个AdminController,添加如下代码:

    public class AdminController : Controller
    {
        //
        // GET: /Admin/
    
        [Authorize]
        public ActionResult Index()
        {
            return View("Index");
        }
    
        [Authorize]
        public ActionResult Top()
        {
            return View("Top");
        }
    
        [Authorize]
        public ActionResult Left()
        {
            return View("Left");
        }
    }

    相对应新建如下视图:

    QQ截图20111023110532

    Index.cshtml里面使用frameset引用Top.cshtml和Left.cshtml,方式如下,具体可以看上面那篇文章。

    <frame src="@Url.Action("Top")" noresize="noresize" frameborder="NO" name="topFrame" scrolling="no" marginwidth="0" marginheight="0" target="main" />
    

    下面还需要修改一下AccountController里面的LogOn action,具体如下:

    //
    // POST: /Account/LogOn
    [HttpPost]
    public ActionResult LogOn(LogOnViewModel model)
    {
        if (ModelState.IsValid)
        {
            if (context.Users.Any(u => u.UserName == model.UserName && u.Password == model.Password))
            {
                FormsAuthentication.SetAuthCookie(model.UserName, false);
                //下面是修改的地方
                return RedirectToAction("Index", "Admin");
            }
            else
            {
                ModelState.AddModelError("", "用户名或密码不正确");
            }
        }
    
        return View(model);
    }

    这样框架大体就搭好了,效果如下:

    QQ截图20111023143027

    实现用户管理

    要实现用户管理,我们先修改LiveText.Domain项目中User实体,因为我们是用Code-First生成的数据库,如果修改了实体,再一次运行就会出错,所以第一件要做的事就是在LiveText.WebUI项目中的Model文件夹中新建一个LiveTextDbInitializer类,用于当实体发生变化时重新生成数据库。

    public class LiveTextDbInitializer : DropCreateDatabaseIfModelChanges<LiveTextDbContext>
    {
        protected override void Seed(LiveTextDbContext context)
        {
            context.Users.Add(new Domain.Entities.User
            {
                UserName = "admin",
                Password = "admin"
            });
            base.Seed(context);
        }
    }

    然后在Global.asax中的 Application_Start方法中注册一下:

    Database.SetInitializer(new LiveTextDbInitializer());

    下面我们就可以修改User实体了。如果一开始都写好的话,现在就不用修改了,麻烦,困惑。修改后的代码如下:

    public class User
    {
        /// <summary>
        /// 用户编号
        /// </summary>
        public virtual int UserID { get; set; }
        /// <summary>
        /// 用户名
        /// </summary>
        [Required(ErrorMessage = "不能为空")]
        [StringLength(30)]
        [Display(Name = "用户名")]
        public virtual string UserName { get; set; }
        /// <summary>
        /// 用户密码
        /// </summary>
        [Required(ErrorMessage = "不能为空")]
        [DataType(DataType.Password)]
        [StringLength(30, MinimumLength = 5, ErrorMessage = "密码最短为5个字符")]
        [Display(Name = "密码")]
        public virtual string Password { get; set; }
    }

    接下来,我们新建一个UserController,按照下图所示选择。

    QQ截图20111023120355

    最后,将Left.cshtml里面的超链接改一下:

       <li><a href="@Url.Action("Create", "User")" target="main">添加用户</a></li>
       <li><a href="@Url.Action("Index", "User")" target="main">用户列表</a></li>

    OK,再运行一下程序:

    QQ截图20111023122634QQ截图20111023122807

    没有加样式,所以很难看悲伤

    实现文字直播管理

    首先,实现类别管理。

    修改Category实体。

    public class Category
    {
        /// <summary>
        /// 类别编号
        /// </summary>
        public virtual int CategoryID { get; set; }
        /// <summary>
        /// 类别名称
        /// </summary>
        [Required(ErrorMessage = "不能为空")]
        [Display(Name = "类别名称")]
        public virtual string Name { get; set; }
    
        /// <summary>
        /// 标题集合
        /// </summary>
        public virtual List<Title> Titles { get; set; }
    }

    新建CategoryController。

    QQ截图20111023144339

    Now,类别管理完成了,看一下运行效果:

    QQ截图20111023144547QQ截图20111023144627

    第二,实现标题管理

    首先修改Title实体。

    public class Title
    {
        /// <summary>
        /// 标题编号
        /// </summary>
        public virtual int TitleID { get; set; }
    
        /// <summary>
        /// 类别编号
        /// </summary>
        [Required(ErrorMessage = "类别不能为空")]
        public virtual int CategoryID { get; set; }
    
        /// <summary>
        /// 标题名称
        /// </summary>
        [Required(ErrorMessage = "标题不能为空")]
        [Display(Name = "标题名称")]
        public virtual string Name { get; set; }
    
        /// <summary>
        /// 所属类别
        /// </summary>
        public virtual Category Category { get; set; }
        /// <summary>
        /// 文字集合
        /// </summary>
        public virtual List<Text> Texts { get; set; }
    }

    新建TitleController。

    QQ截图20111023152941

    这样就完成了,看一下运行效果:

    QQ截图20111023164751QQ截图20111023164847

    实现文字管理

    首先修改Text实体。

    public class Text
    {
        /// <summary>
        /// 文字编号
        /// </summary>
        public virtual int TextID { get; set; }
        /// <summary>
        /// 标题编号
        /// </summary>
        [Required(ErrorMessage = "标题不能为空")]
        [Display(Name = "所属标题")]
        public virtual int TitleID { get; set; }
        /// <summary>
        /// 发表人
        /// </summary>
        [Required(ErrorMessage = "发表人不能为空")]
        [Display(Name = "发表人")]
        public virtual string Prolocutor { get; set; }
        /// <summary>
        /// 发表内容
        /// </summary>
        [Required(ErrorMessage = "发表内容不能为空")]
        [Display(Name = "发表内容")]
        public virtual string ProContent { get; set; }
        /// <summary>
        /// 标题
        /// </summary>
        [Display(Name = "发表时间")]
        public virtual DateTime ProDate { get; set; }
        /// <summary>
        /// 所属标题
        /// </summary>
        [Display(Name = "所属标题")]
        public virtual Title Title { get; set; }
    }

    新建TextController。

    QQ截图20111023165707

    OK,看一下运行结果:

    QQ截图20111023172926

    QQ截图20111023173123

    今天到此为止,下一篇用JQuery在前台显示。

  • 相关阅读:
    PHP流程控制之do...while循环的区别
    php流程控制 之循环语句的使用
    PHP流程控制之分支结构switch语句的使用
    PHP流程控制之if语句多种嵌套
    PHP流程控制之嵌套if...else...elseif结构
    PHP基础语法之 三元运算符和其它运算符
    PHP基础语法之 位运算
    php常量和变量之变量引用
    php数据类型之自动转换和强制转换
    php数据类型之查看和判断数据类型
  • 原文地址:https://www.cnblogs.com/nianming/p/2221931.html
Copyright © 2011-2022 走看看