【问题标题】:Switch ASP.MVC Validation based on Model Instance and Context根据模型实例和上下文切换 ASP.MVC 验证
【发布时间】:2013-04-05 17:45:18
【问题描述】:

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

谢谢

【问题讨论】:

    标签: asp.net-mvc validation fluentvalidation


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多