跟蓝狐学MVC教程--ASP.NET MVC5核心类介绍及其作用

跟蓝狐学MVC教程--ASP.NET MVC5核心类介绍及其作用

4918发表于2016-08-15

学习ASP.NET mvc5最关键是要掌握里面一些的重要的核心类的作用。

下面蓝狐软件就来给大家总结一下ASP.NET MVC5核心类的作用。

1、RouteCollection

RouteCollection是路由集合,在注册路由和查找路由的时候会用上。


MVC路由具体详细介绍参考:ASP.NET MVC路由系统机制详细讲解


2、VirtualPathProviderViewEngine

VirtualPathProviderViewEngine是MVC视图引擎的基类,主要用来查找相应路径下的视图文件和创建视图,其中razorViewEngine就是继承于这个类。继承并重写这两个类都可以实现视图路径或名字的自定义,达到皮肤主题的效果。之前我写过一篇文章使用的是继承RazorViewEngine类。

ASP.NET MVC扩展自定义视图引擎支持多模板&skins换肤机制


3、ModelValidatorProvider

ModelValidator顾名思义是Model的验证器,具体请看:跟蓝狐学MVC教程--详解ASP.NET MVC Model验证


4、XXValueProvider(Model Binder、Model Provider)

MVC 中的Action方法的参数可以是字符串,数字这样的简单类型,也可以是一个复杂的类对象类型。

当一个Http请求过来的时候这些不同的参数对应的值是是通过Model Binding的形式绑定,其中绑定又分为简单值类型(Model Binder)和复杂对象类型(Model Provider)。

具体参考:

跟蓝狐学MVC教程--自定义ASP.NET MVC Model绑定系统-自定义的Value Provider

跟蓝狐学MVC教程--自定义ASP.NET MVC Model绑定系统-自定义的Model Provider

ASP.NET MVC中默认Model Binder绑定Action参数为List、Dictionary等集合的实例


5、View

View是MVC三大组件之一,View视图我们可以把它理解成一个模板文件(Razor一般是.cshtml)。

ASP.NET MVC的Razor视图View详解教程

6、Model

Model也是MVC三大组件之一,可以把Model理解成是装载数据的容器。

7、Controller

Controller是MVC三大组件的桥梁,通过它把View和Model连接起来,其作用是接收Http请求,调用逻辑代码,把返回的的Model数据传递给相应的视图。

ASP.NET MVC的Controller介绍

ASP.NET MVC的Controller接收输入详解

ASP.NET MVC的Controller响应输出详解


8、Filter

Filter中文名是“过滤器”,它是AOP的产物,通过它可以实现身份验证和日志记录等功能。

ASP.NET MVC的Filter过滤器详解

9、ActionResult

ActionResult是Controller里面的Action返回类型。

它是ASP.NET MVC框架的一个抽象类,在框架内部就默认派生了一些类。

类名 抽象类 父类 功能
ContentResult     根据内容的类型和编码,数据内容.
EmptyResult     空方法.
FileResult abstract   写入文件内容,具体的写入方式在派生类中.
FileContentResult   FileResult 通过 文件byte[] 写入文件.
FilePathResult   FileResult 通过 文件路径 写入文件.
FileStreamResult   FileResult 通过 文件Stream 写入文件.
HttpUnauthorizedResult     抛出401错误
JavaScriptResult     返回javascript文件
JsonResult     返回Json格式的数据
RedirectResult     使用Response.Redirect重定向页面
RedirectToRouteResult     根据Route规则重定向页面
ViewResultBase abstract   调用IView.Render()
PartialViewResult   ViewResultBase 调用父类ViewResultBase 的ExecuteResult方法. 
重写了父类的FindView方法. 
寻找用户控件.ascx文件
ViewResult   ViewResultBase 调用父类ViewResultBase 的ExecuteResult方法. 
重写了父类的FindView方法. 
寻找页面.aspx文件

10、Controller Factory和Action Invoker

Controller Factory和Action Invoker是分别是MVC框架创建Controller实例和调用Action方法的组件。

下图很清晰的表明了他们的关系。



DefaultControllerFactory是MVC框架自带的一个Controller Factor实现,当然你也可以自定义一个Controller Factory

写好之后在Global.asax加入下面代码让其生效:


ControllerBuilder.Current.SetControllerFactory(new CustomControllerFactory()); 


深入了解ASP.NET MVC5的Controller核心原理及扩展(1)

深入了解ASP.NET MVC5的Controller核心原理及扩展(2)

Action Invoker是调用Action方法的组件。MVC框架的默认实现为ControllerActionInvoker。


11、DependencyResolver

DependencyResolver是MVC框架提供给我们用于依赖注入的,我把它翻译成依赖注入解析器什么是ASP.NET MVC的依赖注入控制反转

我们也可以自定义一个依赖注入解析器。要使用其生效需要在Global.asax加入下面代码:

DependencyResolver.SetResolver(new AutofacDependencyResolver(container));




小编蓝狐