日期:2014-05-17  浏览次数:20927 次

学习 ASP.NET MVC (第一回)理论篇

学习ASP.NET MVC架构,非常不错的东西,想必大家都已经对他有了些了解,此文是基础知识,个人总结,高手绕过。
MVC
三种角色
--Model:用于存储数据的组件
--View:根据Model数据进行内容展示的组件
--Controller:接受并处理用户指令(操作Model),选择一个View并输出内容。
Controller对View进行引用,但是View不知道Controller的存在。Controller和View都是单向引用Model
MVC变种:Observer模式,MVP模式。

MVC与三层架构
三层架构是一种架构模式,它有很明显的层次关系,而MVC是一种表现模式,其中的三个元素没有层次上的先后关系,只是组件之间的协作。

MVC与WebForms
WebForms提倡的是将Web开发抽象成一个组件模型,使用方便,入门容易,但是封装性太强,用好很难,内部有复杂的生命周期和事件处理。

ASP.NET MVC的优势
1.直接,没有太多控件的概念
2.易于对界面逻辑进行单元测试
3.易于前后台人员的配合
....

ASP.NET MVC的组件协作(基本流程)
URL-->Controller(会执行一个方法Action)-->从数据库中获取一个Model对象-->将Model作为ViewData传递给View(Detail.aspx)。
主要的几个步骤:URL Routing,Controller&Action Executing,View Rendering

URL Routing :
ASP.NET MVC使用的是URL进行驱动的,根据程序中指定的规则从URL中确定Controller名,Action名,其他参数。

System.Web.Routing.dll。独立于ASP.NET MVC框架的组件,可用于任何ASP.NET应用程序。作用是将URL转换为RouteData等数据。
使用:
1>.配置UrlRoutingModule。
2>.在Application_Start时添加规定,这里需要注意锁定的问题(由于Web应用程序天生是多线程的)。
3>.规则的顺序。
4>.RouteExistingFiles属性。

在Global.asax文件中定义:


// URL规则的定义
public static void RegisterRoutes(RouteCollection routes)
{
????? routes.MapRoute(
?????
" Default " ,
?????
" {controller}/{action}/{id} " ,
?????
new {action = " Index " ,id = 0 },
?????
new {controller = @" ^\w+ " ,id = @" \d+ " });
???
?????
// Car/bnw.abc
????? routes.MapRoute(
?????
" Car " ,
?????
" Car/{make}.{model} "