中] 目录 一、 ModelBinder 二、CustomModelBinderAttribute与ModelBinderAttribute 三、ModelBinders 1: foo: FooModelBinder 2: bar: N/A 3: baz: N/A 三、ModelBinders 如果我们不曾通过ModelBinderAttribute特性为某个 Action方法参数的ModelBinder类型进行显式定制,默认采用的Model是通过静态类型ModelBinders来提供的。 如下面的代码片断所示,ModelBinders具有一个静态只读属性Binders,表示当前注册ModelBinder列表,其类型为ModelBinderDictionary。 通过ModelBinders的静态属性Binders实现针对基于某种数据类型的ModelBinder注册。
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); ModelBinders.Binders.Add (typeof(JArray), new JArrayModelBinder()); ModelBinders.Binders.Add(typeof(JObject), new JObjectModelBinder
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); ModelBinders.Binders.Add (typeof(JArray), new JArrayModelBinder()); ModelBinders.Binders.Add(typeof(JObject), new JObjectModelBinder
除此之外,还可在Global文件中使用使用ModelBinder类的Binder属性来注册ModelBinderProvider ModelBinders.Binders.Add(typeof(LessonEditInfoViewModel ModelBinder提供策略有不同的优先级,具体如下: 在参数上使用CustomModelBinderAttribute 使用ModelBinderProviders.BinderProviers 使用ModelBinders.Binders
} return filter; } } 然后注册registered in Application_Start方法中(将下面代码放进去) ModelBinders.Binders.Add
abstract class VEntity { public virtual long Id { get; set; } } Global.asax中Application_Start添加代码: ModelBinders.Binders.Add
ModelBinders 静态类用于注册模型绑定器,可以在Application_Start方法中为指定类型设置绑定器 ModelBinderProvider GetBinder(Type modelType