ModelBindingContext “知道”它正在处理的模型类型,因为您必须:
- 将 ModelBinder 属性添加到您的模型
- 使用 ModelBinders.Binders.Add() 方法将 ModelBinder 注册到您的模型中。
ModelBinder 属性示例:
[ModelBinder(typeof(ContactBinder))]
public class Contact { ... }
ModelBinders.Binders.Add() 示例:
void Application_Start()
{
ModelBinders.Binders[typeof(Contact)] = new ContactBinder();
}
如果您已经注册了 ModelBinder 并实现了 BindModel 方法:
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { ... }
查询 ModelBindingContext.ModelType 是否等于您的模型,例如
if (bindingContext.ModelType == typeof(Contact)) { ... }
从 ModelBindingContext.ValueProvider 属性重新水化您的模型,以检索表示来自表单帖子、路由数据和查询字符串的数据的 ValueProviderResult 实例,例如
bindingContext.ValueProvider["Name"].AttemptedValue;
以下书籍分别使用
了 ASP.NET MVC 2 in Action和
ASP.NET MVC 1.0 Quickly