如何在ASP.NET MVC中验证FluentValidation之前拦截我的模型?

时间:2014-09-02 15:27:55

标签: asp.net-mvc asp.net-mvc-5 fluentvalidation

假设:

  1. FluentValidation通过使用依赖注入与我的ASP.NET MVC 5 Web服务器集成。
  2. FluentValidation规则已设置为验证我的模型属性,假设为propA
  3. 假设我有一个发布到ASP.NET MVC 5 Web服务器的页面,我的模型propA是根据用户输入的TextBox值设置的。但我想知道,如果我可以在验证我的模型的Web服务器中运行FluentValidation之前注入我自己的序列化方法来更改propA的值吗?

    有可能吗?

1 个答案:

答案 0 :(得分:1)

FaledValidation和DataAnnotation方法的验证在绑定模型后工作,因此您可以为模型创建自定义ModelBinder:

self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 70, 320, 44)];

在global.asax中注册

public class YourBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var model = (YourModel)base.BindModel(controllerContext, bindingContext);

        model.PropA = model.PropA + " catched before validation";
        return model;
    }
}

并传递模型类型的参数:

protected void Application_Start()
{
    ModelBinders.Binders.Add(typeof(YourModel), new YourBinder()); // asssociate model type with binder
}