【问题标题】:asp.net mvc DataAnnotation Validationasp.net mvc 数据注释验证
【发布时间】:2009-04-23 09:51:39
【问题描述】:

我将在我的应用程序中为自定义对象创建一些验证。但是在尝试创建 CustomValidation 规则时我遇到了一些麻烦。我的对象有字段 - BirthDay - 这不是必需的,但如果用户输入它,我需要通过简单的验证来验证它,例如用户 DataType 验证 - DataType.DateTime。当我尝试这样做时,我遇到了验证错误 - 需要生日。当我创建自定义验证并始终返回 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; }
}

附言对不起我的英语 =)

【问题讨论】:

    标签: asp.net-mvc validation


    【解决方案1】:

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

    public DateTime? BirthDay { get; set; }

    所以它可以有一个空值并且不需要设置。

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

    【讨论】:

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