[转载]ASP.NET MVC3实践–入门 – 午夜凋零 – 博客园.
1、引言
MVC3是ASP.NET框架下的MVC框架,随MVC3同期发布的还有ASP.NET的最新引擎Razor,关于MVC3和Razor的详细文档参见MSDN
MSDN:MVC3 MSDN上的MVC3参考,建议快速浏览
MSDN:Razor Razor的整体介绍,建议未使用过的读者详细了解下
本博客从本文开始,将陆续推出ASP.NET MVC3的系列文章,旨在介绍ASP.NET的MVC框架,以及如何利用此框架进行高效的WEB开发。对于本文的读者,需要了解ASP.NET、MVC构 架、以及Entity Framework的基础知识。好的,废话不多说,让我们开始ASP.NET的MVC之旅吧!
2、ASP.NET框架下的MVC应用程序的执行
阶段 | 详细信息 |
---|---|
接收对应用程序的第一个请求 | 在 Global.asax 文件中,Route 对象将添加到 RouteTable 对象中。 |
执行路由 | UrlRoutingModule 模块使用 RouteTable 集合中第一个匹配的 Route 对象来创建 RouteData 对象,然后使用所创建的对象创建 RequestContext 对象。 |
创建 MVC 请求处理程序 | MvcRouteHandler 对象将创建 MvcHandler 类的实例,并将 RequestContext 实例传递给处理程序。 |
创建控制器 | MvcHandler 对象使用 RequestContext 实例标识用于创建控制器实例的 IControllerFactory 对象(通常是 DefaultControllerFactory 类的实例)。 |
执行控制器 | MvcHandler 实例调用控制器的 Execute 方法。 |
调用操作 | 对于从 ControllerBase 类继承的控制器,与该控制器关联的 ControllerActionInvoker 对象将决定要调用的 controller 类的操作方法,然后调用该方法。 |
执行结果 | 操作方法将接收用户输入,准备合适的响应数据,然后通过返回结果类型来执行结果。 可执行的内置结果类型包括:ViewResult(呈现视图并且是最常用的结果类型)、RedirectToRouteResult、RedirectResult、ContentResult、JsonResult、FileResult 和 EmptyResult。
|
3、开发环境
Visual Studio 2010的安装包只包含MVC2,需要单独安装,建议使用http://www.asp.net/mvc/mvc3上的web installer安装,如果使用单独的ASP.NET MVC3安装包,可能在个别步骤出现挂起的现象。
数据库方面,为了方便使用Entity Framwork,本文使用SQL Server。配置方面不用过多关注,只需要默认配置就能够运行本文提供的内容。
与J2EE框架下的MVC繁琐的开发环境搭建不同,在ASP.NET下,只需要如下工具即可:
Visual Studio Web Developer Express 2010
ASP.NET MVC 3 Tools
SQL Server 2008 Express
下面的链接有asp.net站点提供的Web Developer Express+MVC3的web installer。
不过对于有条件的读者,建议使用Visual Studio的完整版本。
4、辅助工具NuGet
NuGet是.NET平台下面向开发者的包管理器,对于曾经挣扎在Struts、Hibernate等东西的配置文件的读者来说,NuGet是 一开发者的福音。NuGet的使用类似于Linux下的包管理器,但也许更为简单。对于一个项目,NuGet可以做下面这些事情:
1. 搜索包;
2. 下载包到本地并添加到项目中(包括添加引用和dll等文件);
3. 根据包自动配置Web项目的config文件。
关于NuGet的更多内容,请参考codeplex上的NuGet项目:
这里,我们演示如何使用NuGet在一个空MVC3项目中加入Ajax Control Toolkit,这将是一个非常简单的过程^_^。
首先新建一个MVC3项目,选择空模板,Project Layout如图1所示:
图1.
然后,右键单击项目中的“引用”,在弹出菜单中点击“Manage NuGet Packages”,在搜索框中键入要搜索包的名字即可,如图2所示:
图2.
然后点击Install,然后,就没有然后了,NuGet会为你完成所有的配置!
Tips:MVC3的项目模板,包括Empty的模板,会安装如EntityFramework、JQuery等几个常用的包,这些包都可以使用NuGet来进行管理。