Asp.net mvc 基于模型实例和上下文的切换ASP.MVC验证

Asp.net mvc 基于模型实例和上下文的切换ASP.MVC验证,asp.net-mvc,validation,fluentvalidation,Asp.net Mvc,Validation,Fluentvalidation,对于相同的MVC控制器操作和模型,我希望根据模型上的值和用户的请求应用不同的验证规则 对于同一控制器和同一操作: 如果高级用户登录,则其验证规则集应与低级用户不同 如果该模型已被标记为某个值,那么该模型将需要一组与没有该标记的模型不同的验证规则 我对任何可能支持这个、第三方或其他方面的框架都感兴趣 我在FluentValidation CodePlex项目上发布了一个类似的问题: 我想从那篇文章中得到一个暗号: IValidator GetValidator<T>(object

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

对于同一控制器和同一操作:

  • 如果高级用户登录,则其验证规则集应与低级用户不同
  • 如果该模型已被标记为某个值,那么该模型将需要一组与没有该标记的模型不同的验证规则
我对任何可能支持这个、第三方或其他方面的框架都感兴趣

我在FluentValidation CodePlex项目上发布了一个类似的问题:

我想从那篇文章中得到一个暗号:

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
    {
        ...
    }
}
IValidator GetValidator(对象模型、上下文)
{
if(typeof(T)=typeof(MyModel))
{
var myModel=(myModel)模型;
if(myModel.Level==1&&context.CurrentUser==2)
{
返回getSpecialValidatorFormModel();
}
其他的
{
返回GetNormalValidatorForMyModel();
}
}
其他的
{
...
}
}

谢谢

如果我从FluentValidationModelValidatorProvider继承,我似乎可以通过FluentValidation实现这一点。 我可以重写CreateValidator来实现我想要的。 我还将使用MyFluentValidationModelValidatorProvider创建自己的配置方法