65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.79/5 (121投票s)

2012年10月31日

CPOL

6分钟阅读

viewsIcon

1060207

downloadIcon

40531

使用 MVC4.0 创建一个简单的应用程序。

介绍 

在本文中,我们将了解什么是 MVC,并使用模型、视图和控制器创建一个简单的应用程序。     

模型视图控制器:MVC 是一种软件架构,它将逻辑与用户界面分离。这是通过将应用程序分为三个部分:模型、视图和控制器来实现的。MVC 是关注点分离。MVC 也是一种设计模式。

模型:表示应用程序中的数据逻辑行为。它表示应用程序的业务逻辑。模型在状态发生变化时会通知视图和控制器。

视图:提供应用程序的用户界面。视图会将模型的状态转换为可读的 HTML。 

控制器:接受用户输入,并指示视图和模型相应地执行操作。

MVC 的优点

  1. 完全控制 HTML 渲染。HTML ID 无需重命名
  2. 提供清晰的关注点分离 (SoC)。
  3. 无 ViewState(无状态)。 
  4. 支持测试驱动开发 (TDD)。 
  5. 易于与 JavaScript 框架集成。
  6. RESTful URL 支持 SEO。例如,用户/评论/1 的状态转移 URL,对用户友好,无需 URL 重写。 
  7. 客户端集成变得容易,如使用 JavaScript、JQuery、Ajax、JSON…… 
  8. 支持多种视图引擎(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");
}

PartialViewResultPartialViewResult 类继承自抽象的“ViewResultBase”类,并用于渲染部分视图。 

public PartialViewResult Test() 
{ 
    return PartialView("Result");
}

ViewResult:它渲染指定的视图。 

public ViewResult Test() 
{ 
   return View("Result"); 
}

FileResult:当我们要将二进制内容/文件作为输出返回时使用它。 

RedirectToRouteResult:当我们想重定向到另一个操作方法时使用它。 

JavaScriptResult:如果希望我们的操作方法返回可以在客户端执行的脚本,则可以使用此类型。 

MVC 3 中支持的三种新类型

  1. HttpNotFound:这会在客户端返回 404 错误。当资源不可用并且我们想显示 404 时,它可能很有用。 
  2. RedirectResult根据布尔标志,它可以是临时或永久返回码 302。可用于重定向到给定的 URL
  3. 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 的新功能更感兴趣。让我们先学习构建一个简单的应用程序,然后我们再继续学习高级功能。

使用 MVC 4.0 创建一个简单的应用程序 - CodeProject - 代码之家
© . All rights reserved.