ASP.NET MVC 3 简介
ASP.NET MVC 3 框架简介以及如何使用 ASP.NET MVC 3 创建应用程序
引言
ASP.NET MVC 框架遵循定义良好的 MVC 模式来创建 Web 应用程序。MVC 设计模式用于分离应用程序的不同部分,以实现更好的可伸缩性、可扩展性和可测试性。
普通 Web 窗体的主要挑战之一是业务逻辑的可测试性。对代码隐藏逻辑进行单元测试非常复杂。此外,应用程序的可扩展性需要对应用程序进行大量返工。ASP.NET MVC 解决了与传统 Web 窗体应用程序相关的问题。
在本文中,我们将讨论如何创建 MVC 应用程序并理解控制器、视图和模型。
MVC
MVC 意味着模型-视图-控制器。控制器负责处理请求的整体执行。控制器接收来自 Web 服务器的请求并确定数据需求。根据数据需求,控制器联系相应的模型。模型将提供所需的数据,这些数据将使用视图渲染到 UI。

为了使用 ASP.NET MVC,我们可以安装 Web Platform Installer,其中包含用于编写 MVC 应用程序的 Visual Studio 2010 Express、用于存储数据的 SQL Server Express 和用于托管应用程序的 IIS Express。我们可以从 Microsoft Web Platform Installer 3.0 下载 Web Platform Installer。
如何创建 ASP.NET MVC 应用程序
让我们从创建第一个 MVC 应用程序开始。 文件-> 新建项目,然后选择 ASP.NET MVC 3 Web 应用程序模板。

这将打开新的 ASP.NET MVC 3 项目窗口。

选择“空”或“Internet 应用程序”。“空”将创建一个空白应用程序。“Internet 应用程序”将创建一个包含一些默认页面的应用程序。对于我们的示例,我将选择“Internet 应用程序”选项。
我们可以选择从同一窗口创建包含在内的测试项目和我们的 MVC 应用程序。此外,我们可以选择视图引擎为 ASPX 或 Razor。ASPX 用于向后兼容。
我们的新解决方案将如下所示

我们有不同的文件夹来保存控制器、视图和模型。由于我们选择了“Internet 应用程序”,因此我们的应用程序是一个功能齐全的应用程序。我们可以运行它并查看页面。

它打开了一个带有两个选项卡的小应用程序,“主页”和“关于”。此外,我们还可以选择“登录”,在那里我们可以注册一个新用户。
当您选择“关于”选项卡时,它将进入 HomeController
并使用 About()
方法返回一个视图。About()
没有指定任何视图名称,因此控制器将进入“视图”并找到与 HomeController
对应的目录。在这里,它也使用控制器的名称来查找相应的目录。然后,控制器检查它是否包含任何名为“About”的视图。

我们可以在 About()
方法中指定一个视图名称,例如
public ActionResult About()
{
return View("Index");
}
现在,“主页”和“关于”显示相同的内容。
将数据从控制器传递到视图
现在,让我们看看如何将一些信息从控制器传递到视图。 有两种方法可以将数据从控制器传递到视图。
使用 ViewBag
ViewBag
是一个动态对象,我们可以在其中动态添加任何属性。
例如,如果我想从 Home 控制器将一些联系信息(如姓名和联系电话)传递给“关于”视图,我们可以使用 ViewBag
定义它,如下所示
public ActionResult About()
{
ViewBag.ContactPerson = "George MAthew";
ViewBag.ContactNumber = "91-99444444000";
return View();
}
此数据将在 about.cshtml 中访问,如下所示
@{
ViewBag.Title = "About Us";
}
<h2>About</h2>
<div>
Contact person : @ViewBag.ContactPerson
Contact Number : @ViewBag.Contactnumber
</div>
请注意,添加的动态属性不区分大小写。 此外,如果动态属性引用错误,它不会抛出任何异常。
现在,我们的“关于”选项卡如下所示

使用 Model
现在,让我们看看如何使用 Model 传递数据。定义一个 Model
类并指定所需的属性。我们的示例 Model
类如下所示
namespace SampleApp.Models
{
public class ContactAddress
{
public string Address { get; set; }
public string City { get; <br />set; }
public string Country { get; set; }
}
}
现在,让我们在控制器中构造 Model
并将其传递给我们的视图
public ActionResult About()
{
var address = new ContactAddress()
{
Address = "Lane 21, Gachibowli",
City = "Hyderabad",
Country = "India"
};
return View(address);
}
现在,我们将在我们的视图中使用它。在视图中,我们有另一个名为 Model
的对象,它保存动态属性,如 ViewBag
。我们可以使用 Model
提取模型属性。
@{
ViewBag.Title = "About Us";
}
<h2>About</h2>
<div>
Contact Address: @Model.Address, @Model.City, @Model.Country
</div>
现在,我们的“关于”选项卡如下所示

请注意,对于 Model
属性,没有 Intellisense 支持。我们可以在视图的顶部定义预期模型的类型,这将为 Model
对象提供 Intellisense 支持。

结论
在本文中,我们讨论了 ASP.NET MVC 框架,如何创建基本的 MVC 应用程序,并讨论了控制器到视图的通信。 我们还有很多关于 MVC 的内容要讨论,例如包含所有图像和样式的 Content 文件夹,包含 jQuery 脚本的 Scripts 文件夹和 MVC 细节。我们稍后将详细讨论这些主题。
历史
- 2011年4月28日:初始发布