asp.net mvc DataAnnotation验证

时间:2009-04-23 09:51:39

标签: asp.net-mvc validation

我将在我的应用中为自定义对象创建一些验证。但是在尝试创建CustomValidation规则时遇到了一些麻烦。我的对象有字段 - BirthDay - 这不是必需的,但如果用户输入它,我需要在简单验证上验证它,例如用户DataType验证 - DataType.DateTime。当我尝试这样做时,我有验证错误 - BirthDay是必需的。当我创建自定义验证并始终返回true时,我有相同的错误。下面是一些代码:

[MetadataType(typeof(User.Metadata))]
public class User
{
    #region Metadata        
    private class Metadata
    {
        [Required(ErrorMessage="Name is required")]
        [StringLength(5, ErrorMessage="Max Length is 5")]
        public string Name { get; set; }
        [CustomValidation(typeof(User), "ValidateBirthDay", ErrorMessage="We have trouble.")]
        public DateTime BirthDay { get; set; }

    }
    #endregion

    public static bool ValidateBirthDay(object value)
    {           
        return true;
    }

    public int? ID { get; set; }
    public string Name { get; set; }        
    public DateTime BirthDay { get; set; }
}

P.S。抱歉我的英文=)

1 个答案:

答案 0 :(得分:4)

你需要使你的属性可以为空,即

public DateTime? BirthDay { get; set; }

因此它可以具有空值而不需要设置。

您使用CustomValidation属性的方式似乎也不正确。我相信你需要创建一个派生自ValidationAttribute基类的类,并在CustomValidation属性的第一个参数中传递它的类型。