理解ASP.NET MVC底层运行机制

来源:互联网 发布:org域名不能注册了? 编辑:程序博客网 时间:2024/05/17 01:12

ASP.NET MVC有三大组件(即模型、视图、控制器)。所谓模型,就是MVC需要提供的数据源,负责数据的访问和维护。所谓视图,就是用于显示模型中数据的用户界面。所谓控制器,就是用来处理用户的输入,负责改变模型的状态并选择适当的视图来显示模型的数据。以下是我绘制的MVC三大组件之间的交互图。


从交互图中可以看出,MVC从用户发送请求到页面呈现结果大致经过了五个步骤,分别为:

(1). 用户在浏览器输入地址,向页面发送请求(实则是向控制器发出相关命令);

(2). 控制器接受命令后,向模型请求获得相关的数据;

(3). 模型将相应的数据返回给控制器;

(4). 控制器将相关数据发送到指定的视图;

(5). 指定的视图呈现相关的数据。


从界面中可以看出,Mcirosoft已经约定了一套规范的目录结构,主要功能如下:

Content:寻访CSS、图片等静态资源文件;

Controllers:存放一系列以***Controllers命名的控制器组件,执行与模型和视图的交互(一般业务会提取到业务逻辑层中);

Models:存放Linq To SQL或ADO.NET Data Entity Model等模型组件,也可存放有关的数据操作等(一般提取到数据访问层中),或者是视图层中需要使用的Model模型;

Scripts:存放系统需要的JavaScript文件;

Views:存放与Controllers在与方法对应的视图,注意:如果存在***Controllers控制器,在Views中就必然会映射一个***命名的文件夹。在Views之下的Shared则存放视图组件的公共部分,如.master、样式表等。

此外,Global.asax实现MVC的URL的路由控制,可以在其中的RegisterRoutes()中设置默认的路由,以下是Global.asax的具体路由代码。

public class MvcApplication : System.Web.HttpApplication

    {

        protected void Application_Start()

        {

            AreaRegistration.RegisterAllAreas();

            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

            RouteConfig.RegisterRoutes(RouteTable.Routes);

            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //自定义View

            ViewEngines.Engines.Clear();

            ExtendedRazorViewEngine engine = new ExtendedRazorViewEngine();

            engine.AddPartialViewLocationFormat("~/Areas/Common/Views/Shared/{0}.cshtml");

            ViewEngines.Engines.Add(engine);

            //设置MEF依赖注入容器

            MefConfig.RegisterMef();

            //Model去除前后空格

            ModelBinders.Binders.DefaultBinder = new TrimModelBinder();

        }

    }

当MVC在.net framework3.5中运行时,还需要在web.config中的httpModules配置节中注册UrlRoutingModule类,用于解析URL路由,这正是MVC与传统的ASP.NET应用程序的根本区别。

<httpModules>

    <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />

</httpModules>


原文:http://www.cnblogs.com/hmiinyu/archive/2012/05/25/2517730.html