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

前端之家收集整理的这篇文章主要介绍了ASP.NET MVC 3数据注释:动态添加验证前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是新的数据注释.我想知道是否可能(以及如何)动态添加一些验证.解释为什么是非常广泛的,但是我有一个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

原文链接:https://www.f2er.com/aspnet/250631.html

猜你在找的asp.Net相关文章