【问题标题】:Questions about Asp.net Mvc validating input validity关于 Asp.net Mvc 验证输入有效性的问题
【发布时间】:2020-03-27 08:07:42
【问题描述】:

我在开发中遇到问题。

public class Student
{
     public bool a{get;set;}
     public string b{get;set;}
}

当 a 为真时 B 不能为空,否则 b 可以为空。我现在需要使用 Attribute 进行验证。我能做什么?

【问题讨论】:

    标签: asp.net model-view-controller


    【解决方案1】:

    如果您坚持使用属性验证,那么您将不得不创建自己的自定义属性,并可能尝试通过反射访问 a 值。如果你问我,那就太复杂了……

    查看this 了解如何创建自己的验证属性。

    我宁愿建议你使用IValidatableObject 接口。

    public class Student : IValidatableObject
    {
       public bool a{get;set;}
       public string b{get;set;}
    
       public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
       {
          if(a & string.IsNullOrEmpty(b)) 
            yield return new ValidationResult("b is required", new[] {"b"});
       }
    }
    

    Validate 方法将在验证后运行,并将ValidationResult 的消息附加到列表中包含的属性(在您的情况下为b)。

    试试这个解决方案。

    【讨论】:

      猜你喜欢
      • 2010-09-14
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多