使用 MVC 4.0 创建一个简单的应用程序






4.79/5 (121投票s)
使用 MVC4.0 创建一个简单的应用程序。
介绍
在本文中,我们将了解什么是 MVC,并使用模型、视图和控制器创建一个简单的应用程序。
模型视图控制器:MVC 是一种软件架构,它将逻辑与用户界面分离。这是通过将应用程序分为三个部分:模型、视图和控制器来实现的。MVC 是关注点分离。MVC 也是一种设计模式。
模型:表示应用程序中的数据逻辑行为。它表示应用程序的业务逻辑。模型在状态发生变化时会通知视图和控制器。
视图:提供应用程序的用户界面。视图会将模型的状态转换为可读的 HTML。
控制器:接受用户输入,并指示视图和模型相应地执行操作。
MVC 的优点
- 完全控制 HTML 渲染。HTML ID 无需重命名
- 提供清晰的关注点分离 (SoC)。
- 无 ViewState(无状态)。
- 支持测试驱动开发 (TDD)。
- 易于与 JavaScript 框架集成。
- RESTful URL 支持 SEO。例如,用户/评论/1 的状态转移 URL,对用户友好,无需 URL 重写。
- 客户端集成变得容易,如使用 JavaScript、JQuery、Ajax、JSON……
- 支持多种视图引擎(aspx、Razor)
创建一个简单的应用程序:
步骤 1:从文件菜单中选择项目,然后选择 MVC 4.0 应用程序
步骤 2:选择模板和视图引擎(Razor、ASPX、NHaml、Spark)。如果想包含测试项目,请勾选“创建单元测试项目”选项
已添加具有以下结构的解决方案。
构建并运行应用程序,您可以看到应用程序的主页。默认情况下,我们添加了“主页”、“关于”和“联系”部分。
让我们添加自己的控制器、模型和视图来显示用户详细信息。右键单击“模型”,添加一个名为UserModels.cs的类,其结构如下:
现在让我们在字段上应用验证
Required
:使字段值成为必填项。StringLength
:设置字段的最大长度。Range
:设置最小值和最大值。DataType
:设置字段支持的数据类型。
让我们在视图中添加一些默认数据。为此,我们将创建一个名为 user 的类并用一些默认值初始化它。
现在让我们添加用于添加、更新和获取所有用户列表的方法。
现在让我们为我们的模型添加视图。为此,我们将选择强类型视图并选择我们的模型类。您可以看到可用的脚手架模板列表。由于我们正在创建此视图以添加新用户,因此我们将选择“创建”选项。
当我们单击添加时,下面是为视图创建的 cshtml 文件
我们可以看到视图拥有模型中设置的所有字段以及应用于它的验证。
现在让我们为我们的视图添加一个控制器。右键单击控制器文件夹,将控制器命名为 User,选择“空 MVC 控制器”并单击“添加”。
默认情况下,我们的控制器包含一个 Index 方法。右键单击 Index 方法并为此添加视图。Index 方法可用于显示可用用户列表。因此,我们可以将脚手架模板类型选择为 List。
一旦为 Index 和 UserAdd 添加了视图,我们就必须在控制器中定义它们的 get 和 post 方法。默认情况下,它始终是 get。如果我们想要一个 post 方法,我们必须在方法声明之前定义 [httppost]。
HttpGet
:将渲染表单,HttpPost
将提交表单数据。例如,我们需要添加一个新用户。首先,我们需要表单来添加用户,即 get。然后,当我们使用值填写表单时,我们需要提交这些值,以便它们可以保存以供将来访问。
看看我们的控制器结构,它包含两个 get 方法:一个用于获取用户列表 (Index),另一个用于获取 UserAdd
表单。并且,与 get 方法同名,它包含了它的 post 方法。
ActionResult
:操作结果表示框架将代表操作方法执行的命令。ActionResult
类是操作结果的基类。常见返回类型:
ContentResult
:可用于返回纯文本或用户定义的内容类型。
public ContentResult Test()
{
return Content("This is my test data");
}
JsonResult
:用于返回 JSON,主要用于 Ajax 请求。
public JsonResult Test()
{
return Json ("This is my test json data");
}
PartialViewResult
:PartialViewResult
类继承自抽象的“ViewResultBase
”类,并用于渲染部分视图。
public PartialViewResult Test()
{
return PartialView("Result");
}
ViewResult
:它渲染指定的视图。
public ViewResult Test()
{
return View("Result");
}
FileResult
:当我们要将二进制内容/文件作为输出返回时使用它。
RedirectToRouteResult
:当我们想重定向到另一个操作方法时使用它。
JavaScriptResult
:如果希望我们的操作方法返回可以在客户端执行的脚本,则可以使用此类型。
MVC 3 中支持的三种新类型
HttpNotFound
:这会在客户端返回 404 错误。当资源不可用并且我们想显示 404 时,它可能很有用。-
RedirectResult
:根据布尔标志,它可以是临时或永久返回码 302。可用于重定向到给定的 URL -
HttpStatusCodeReturn
:当用户希望从操作方法返回错误代码的选项时可以使用它。它可以是任何代码。
MVC 中的路由
MVC 为添加用户友好的 URL 提供了极大的灵活性。路由在 RouteConfig 类下定义。默认情况下,已定义一个路由。
MVC 路由模式包含 {controller} 和 {action} 占位符。有关路由的更多详细信息,请参阅此链接 http://msdn.microsoft.com/en-us/library/cc668201.aspx
这就是我们的索引页在 URL 中的显示方式
以及 UserAdd 方法,其中控制器是User,操作是UserAdd。
ViewBag、ViewData 和 TempData
视图数据
1. ViewData 是一个字典对象,它派生自 ViewDataDictionary 类。
2. ViewData 用于将数据从控制器传递到相应的视图。
3. 它的生命周期仅限于当前请求。
4. 如果发生重定向,则其值将变为 null。
5. 复杂数据类型需要进行类型转换,并检查 null 值以避免错误。
ViewBag
1. ViewBag 是一个动态属性,它利用了 C# 4.0 中的新动态功能。
2. 它基本上是 ViewData 的包装器,也用于将数据从控制器传递到相应的视图。
3. 它的生命周期也仅限于当前请求。
4. 如果发生重定向,则其值将变为 null。
5. 复杂数据类型不需要类型转换。
TempData
1. TempData 是一个字典对象,它派生自 TempDataDictionary 类并存储在短暂的会话中。
2. TempData 用于将数据从当前请求传递到后续请求,即在重定向的情况下。
3. 它的生命周期非常短,仅限于目标视图完全加载。
4. 复杂数据类型需要进行类型转换,并检查 null 值以避免错误。
5. 它用于存储一次性消息,如错误消息、验证消息。
关注点
对 MVC 4.0 的新功能更感兴趣。让我们先学习构建一个简单的应用程序,然后我们再继续学习高级功能。