根据模型实例和上下文切换ASP.MVC验证

时间:2013-04-05 17:45:18

标签: asp.net-mvc validation fluentvalidation

对于相同的MVC控制器操作和模型,我希望根据模型上的值以及根据用户发出请求的方式应用不同的验证规则。

对于相同的Controller和相同的Action:

  • 如果有高级用户登录,则他应该拥有一组不同于较低级别用户的验证规则。
  • 如果模型已标记为某个值,则模型将需要一组不同于没有此标志的模型的验证规则。

我对任何可能支持此问题的框架感兴趣,第三方或其他方式。

我在FluentValidation CodePlex项目上发布了一个类似的问题: https://fluentvalidation.codeplex.com/discussions/439281

我希望从该帖子中获得的代码片段:

IValidator GetValidator<T>(object model, Context context)
{
    if (typeof(T) == typeof(MyModel))
    {
        var myModel = (MyModel)model;
        if (myModel.Level == 1 && context.CurrentUser == 2)
        {
            return GetSpecialValidatorForMyModel();
        }
        else
        {
            return GetNormalValidatorForMyModel();
        }
    }
    else
    {
        ...
    }
}

由于

1 个答案:

答案 0 :(得分:0)

如果我从FluentValidationModelValidatorProvider继承,看起来我可以使用FluentValidation执行此操作。 我可以覆盖CreateValidator来实现我想要的。 我还将创建自己的使用MyFluentValidationModelValidatorProvider的Configure方法。