0

对于相同的 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
    {
        ...
    }
}

谢谢

4

1 回答 1

0

如果我从 FluentValidationModelValidatorProvider 继承,看起来我可以用 FluentValidation 做到这一点。我可以重写 CreateValidator 来实现我想要的。我还将创建自己的使用 MyFluentValidationModelValidatorProvider 的 Configure 方法。

于 2013-04-05T18:26:39.563 回答