相关疑难解决方法(0)

MVC 3模型验证问题 - 监督或设计

我遇到了一个场景,我需要知道哪个属性当前正在自定义中验证ValidationAttribute.我认为这在MVC 3中很容易,因为ValidationContext它被传递到IsValid方法中.

没有详细说明,这是基本的想法:

protected override ValidationResult IsValid(Object value, ValidationContext validationContext) {

   if (ShouldICareAboutYou(validationContext.MemberName))
   {
       //Do some stuff
   }

   //Return the results
}
Run Code Online (Sandbox Code Playgroud)

这似乎是完美的解决方案,事实上,当使用Validator.TryValidateObject一切工作精美地对我的自定义ValidationAttribute进行单元测试时!

然而...

在调用时TryUpdateModel,或TryValidateModel在我的控制器中,验证运行,但ValidationContext.MemberName为null.

哇啊?!?

我做了一点调查,果然,内部DataAnnotationsModelValidator就是代码......或缺乏代码.

public override IEnumerable<ModelValidationResult> Validate(object container) {
    // Per the WCF RIA Services team, instance can never be null (if you have
    // no parent, you pass yourself for the "instance" parameter).
    ValidationContext context = new …
Run Code Online (Sandbox Code Playgroud)

.net c# validation asp.net-mvc asp.net-mvc-3

21
推荐指数
2
解决办法
2550
查看次数

标签 统计

.net ×1

asp.net-mvc ×1

asp.net-mvc-3 ×1

c# ×1

validation ×1