模型 - 是表示某种对象(通常是一个)的数据结构。它的目的是读取、写入和管理对底层对象的访问,目的是保持应用程序状态。
视图 - 是用于向用户显示可视界面的组件,可能使用模型。它可能是一个简单的表格,也可能是一个复杂的组合成一个完整的网页。
控制器 - 位于视图和模型之间的用户驱动的应用程序逻辑层。它处理用户交互、加载模型并将视图发送给用户。它根据用户请求确定将什么模型发送到视图。
应用程序的整体文件夹结构可能如下所示。
>> Website
>> Controllers
>> Models
>> Views
在 C# MVC 中,每个控制器的名称中必须有后缀 Controller,它们必须扩展 Controller 类并在视图文件夹中具有名称前缀的文件夹(不带 Controller)。然后,此文件夹将包含与控制器上的特定操作相关的所有视图。
控制器可以包含定义为公共功能的任意数量的操作。默认情况下,当从控制器操作返回结果时,视图的名称必须与操作的名称相对应。但是,您也可以按名称指定视图。从控制器加载视图时,可以将对象作为模型发送到视图并在那里生成其内容。
控制器可以加载任何模型并且不受任何限制。
一个Account 控制器定义如下,带有一个动作Login。控制器放置在/Controllers 文件夹中的AccountController.cs 文件中,并且此控制器的所有视图(在此实例中为Login,文件名为Login.cshtml)都放置在/Views/Account 文件夹中。
注意:命名约定必须正确,因为控制器和视图之间使用名称来链接数据。
public class AccountController : Controller
{
public ActionResult Login(string returnUrl)
{
if (User.Identity.IsAuthenticated)
{
return RedirectToAction("Index","Site");
}
return View("Login", new LogOnModel());
}
}
可以通过http://www.mysite.com/Account/Login 访问。如果用户通过身份验证,控制器将重定向到主站点控制器,如果用户未登录,则会显示Login 视图,该视图从指定的LogOnModel 加载数据。
这实际上只是触及了可能的表面。阅读一些关于 ScottGu 的优秀文章的在线信息,这些文章更深入地向您介绍如何使用 MVC。
ASP.NET MVC Framework Overview
ASP.NET MVC Framework How To - Part 1
//Part 2
//Part 3
//Part 4
注意:这些文章是在 2007 年为 MVC 版本 1 编写的,因此有些过时,但模型、视图和控制器如何交互的概念仍然适用。