MVC
RouteModel(PostResolveRequestCache)
Controler
MvcHandler>ControlerBuilder>ControlerFactory>ControlerActivator>DependencyResolver>ActionInvoker>Action>ActionResult
ActionInvoker执行内容(AuthorizationFilter>ModelBinder>ModelValidation>Action)
Model
ControlerDescriptor(Controler元数据)>ActionDescriptor>ParameterDescriptor(ModelBinder)>ModelBinderProvider>ValueProvider
AcceptVerbsAttribute
NameValueCollectionValueProvider
FormValueProvider
QueryStringValueProvider
DictionaryValueProvider
ModelValidator
ValidationAttribute
ModelMetadata(AdditionalValues,ModelMetadataProvider)
各种特性可以设置ModelMetadata
UIHintAttribute(HiddenInput,Html,String,text,Url,MultilineText,Password,Decimal,Boolean,Collection,Object)
HiddenInputAttribute
DataTypeAttribute
DisplayFormatAttribute
EditableAttribute
ReadonlyAttribute
DisplayAttribute
RequiredAttribute
DisplayNameAttribute
TypeConverterAttribute
ListBoxAttribute
ModelMetadataProvider
DataAnnotationsModelMetadataProvider(读取特性初始化ModelMetadata)
IMetadataAware(通过自定义实现该接口的特性可以对ModelMetadata进行自由地定制)
ModelMetadata 创建后回获取所有以上特性值以及实现了IMetadataAware接口的特性值 然后调用IMetadataAware.OnMetadataCreated方法,自己作为参数。
实现该接口的特性:
AdditionalMetadataAttribute
AllowHtmlAttribute
HtmlHelper
EditorForModel()
DisplayForModel()
DisplayFor(x=>x.a)
EditFor(x=>x.a)
LabelFor(x=>x.a)
View
Model中的数据生成什么样的Html可以由模板来决定(默认基于CLR类型匹配对于模板)
自定义模板
模板查询顺序:
- HTMLHelper作为参数templateName传入的模板名称(如果不为空)。
- Metadatadata的TemplateHint属性值(如果不为空)。
- Metadatadata的DataTypeName属性值(如果不为空)。
- 如果Model对象的真实类型为非空值类型,该类型名作为模板View名;否则底层(Underlying)类型名作为模板View名(比如说,对于int?类型则将Int32作为模板View名)。
- 如果Model对象的真实类型为非复杂类型,则使用String模板(由于非复杂类型能够实现与String类型之间的转换,所以可以转换成String进行呈现)。
- 在Model的声明类型为接口情况下,如果该接口继承自IEnuerable则采用Collection模板。
- 在Model的声明类型为接口情况下,使用Object模板。
- 如果Model声明类型不是接口类型,按照其类型继承关系向上追溯知道Object类型,逐个将类型名称作为模板View名称。如果声明类型实现了IEnuerable接口,则将最后的Object替换成Collection。
Filter
AuthorizationFilter、ActionFilter、ResultFilter和ExceptionFilter
不同Scope上Filter的执行顺序(Global>Controller>Action)
AuthorizeAttribute
RequireHttpsAttribute
ValidateInputAttribute
OnActionExecuting1>OnActionExecuting2>Action>OnActionExecuted2>OnActionExecuted1
ActionResult
EmptyResult
ContentResult
FileResult(FileContentResult,FilePathResult,FileStreamResult)
JavaScriptResult
JsonResult
HttpStatusCodeResult
RedirectResult
RedirectToRouteResult
View
ViewResult>ViewEngine(FindView)>ViewEngineResult>View(IView)

浙公网安备 33010602011771号