zoukankan      html  css  js  c++  java
  • ASP.NET MVC轻教程 Step By Step 4——Model、View和Controller

    ASP.NET MVC中的Model(数据模型)主要包括定义数据结构、数据库读写、数据验证等等和对象处理相关的工作。

    在解决方案资源管理器中找到Model文件夹,点击右键,添加一个新类,名为“Message”。包含三个属性:NickName(用户名)、Content(内容)、ReleaseDate(发布日期)。

        public class Message
        {
            public string NickName { set; get; }
            public string Content { set; get; }
            public DateTime ReleaseDate { set; get; }
        }

    Model需要包括对数据进行新增、删除、更新及查询等数据持久化操作。但是作为Demo,我们现在不想和数据库打交道,暂时把数据写在代码里。这样可以把我们的注意力更集中在MVC本身。

    现在在HomeController类中添加一个局部静态List,用来模拟数据源。

        public class HomeController : Controller
        {
            private static List<Message> messages = new List<Message> {
                new Message {NickName="用户1",Content="测试数据1",ReleaseDate=DateTime.Now},
                new Message {NickName="用户2",Content="测试数据2",ReleaseDate=DateTime.Now},
                new Message {NickName="用户3",Content="测试数据3",ReleaseDate=DateTime.Now},
                new Message {NickName="用户4",Content="测试数据4",ReleaseDate=DateTime.Now},
                new Message {NickName="用户5",Content="测试数据5",ReleaseDate=DateTime.Now},
                new Message {NickName="用户6",Content="测试数据6",ReleaseDate=DateTime.Now},
                new Message {NickName="用户7",Content="测试数据7",ReleaseDate=DateTime.Now},
                new Message {NickName="用户8",Content="测试数据8",ReleaseDate=DateTime.Now}
            };

    并且把Index方法作如下修改。

            public ActionResult Index()
            {
                return View(messages);
            }

    是的,我们可以将messages也就是数据源作为View方法的参数传递过去。这样Index视图就可以接收到messages,我们称这样的视图为强类型视图。

    Index视图也需要做一些修改,才可以使用messages。

    @model IEnumerable<MessageBoard.Models.Message>
    
    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Index</title>
    </head>
    <body>
        <h1>MVC留言板</h1>
        @foreach (var message in Model)
        {
            <p>@message.NickName</p>
            <p>@message.Content</p>
            <p>@message.ReleaseDate</p>
            <br />
        }
    </body>
    </html>

    重要的是第一行代码,它表达视图将使用什么类型的数据模型。@model IEnumerable<MessageBoard.Models.Message>是指实现IEnumerable接口的Message集合,如果是单独的Message对象就写@model MessageBoard.Models.Message。

    在Index动作方法中作为View方法的参数messages将会赋值给Index视图中的ViewData.Model属性,所以我们才能像使用messages一样去使用Model。此时我们可以获得message的代码提示,语法又足够简洁,这就是使用强类型视图的好处。

    运行结果如下。

    Model、View和Controller之间的关系可以用下图来表示。

    Model、View和Controller三者彼此关联,相互依存又各自独立,同时三者都可以包含代码,业务逻辑处理代码很容易混乱且分散。个人体会在MVC程序中,Model设计要“重”;Controller要“轻”;View要“傻”。打个不恰当的比方,Model像电脑主机,Controller像键盘鼠标,View像显示器。当然在本文中的Demo,Model仅仅只是提供一个类模型,实际的程序Model的任务不仅如此。

  • 相关阅读:
    ssh时传递环境变量
    linux删除文件后磁盘空间未释放的问题
    gitlab-ci配置疑难备忘
    javac老提示无效的标记
    unity5.6里Baked Lighting下面几个Lighting Mode的解释
    屌爆的xamarin,一人单挑google/apple/windows
    xamarin.droid自己的示例工程有些都装不上模拟器,是因为它的architectures选项没设对
    使用NFC读卡器ACR122u读取银行卡信息
    【转】Gnirehtet – 为 Android 设备提供反向网络连接[Windows、macOS、Linux]
    【转】1分钟学会U盘启动安装Linux系统
  • 原文地址:https://www.cnblogs.com/nivi3000/p/4937669.html
Copyright © 2011-2022 走看看