码迷,mamicode.com
首页 > Web开发 > 详细

ASP.NET MVC轻教程 Step By Step 4——Model、View和Controller

时间:2015-11-06 00:19:02      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

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的任务不仅如此。

 

ASP.NET MVC轻教程 Step By Step 4——Model、View和Controller

标签:

原文地址:http://www.cnblogs.com/nivi3000/p/4937669.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!