加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC 3数据注释:动态添加验证

发布时间:2020-12-15 23:37:59 所属栏目:asp.Net 来源:网络整理
导读:我是新的数据注释.我想知道是否可能(以及如何)动态添加一些验证.解释为什么是非常广泛的,但是我有一个ViewModel在创建时接收和对象.在该对象中,我必须检查一些属性,并根据其值应该有或没有一些验证. 一个例子: public class ProfileViewModel{ [Required(Er
我是新的数据注释.我想知道是否可能(以及如何)动态添加一些验证.解释为什么是非常广泛的,但是我有一个ViewModel在创建时接收和对象.在该对象中,我必须检查一些属性,并根据其值应该有或没有一些验证.

一个例子:

public class ProfileViewModel
{
    [Required(ErrorMessage = "The field {0} is required")]
    [Display(Name = "Client Code")]
    public int ClientCode { get; set; }

    [Required(ErrorMessage = "The field {0} is required")]
    [StringLength(100,ErrorMessage = "The field {0} must have up to 100 characters.")]
    [Display(Name = "Company")]
    public string Company { get; set; }

    [StringLength(50,ErrorMessage = "The field {0} must have up to 50 characters.")]
    [Display(Name = "Name")]
    public string Name { get; set; }

    [StringLength(50,ErrorMessage = "The field {0} must have up to 50 characters.")]
    [Display(Name = "LastName")]
    public string LastName { get; set; }

    public ProfileViewModel(User usr)
    {
        if (usuario.ClientCode != null)
        {
            ClientCode = Convert.ToInt32(usr.ClientCode);
        }
        else
        {
             //ClientCode and Company are not yet required.
             //Name and LastName are now required.
        }
        Company = usr.Company;
        Name = usr.Name;
        LastName = usr.LastName;
    }
}

解决方法

我认为最简单的做法就是实现 IValidatableObject
public class Product : IValidatableObject
{
    public int Prop1 { get; set; }
    public int Prop2 { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (Prop1 < Prop2)
            yield return new ValidationResult("Property 1 can't be less than Property 2");
    }
}

参见:Class-Level Model Validation with … ASP.NET MVC 3

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读