asp.net mvc中EditorFor的客户端验证

时间:2013-09-06 06:08:03

标签: c# asp.net asp.net-mvc validation

我有一个日期的EditorFor模板,其中包含三个下拉列表(mm,dd,yyyy)。下面是相同的类,其中包含一些正常工作的验证

public class DateDDL
    {
        public IEnumerable<SelectListItem> Days { get; set; }
        public IEnumerable<SelectListItem> Months { get; set; }
        public IEnumerable<SelectListItem> Years { get; set; }

        [Attributes.DateDDLValidation("Day", "Month", "Year", ErrorMessage = "Select day")]
        public int Day { get; set; }

        [Attributes.DateDDLValidation("Day", "Month", "Year", ErrorMessage = "Select month")]
        public int Month { get; set; }

        [Attributes.DateDDLValidation("Day", "Month", "Year", ErrorMessage = "Select year")]
        public int Year { get; set; }
}

但是现在我必须在同一个编辑器的模型类中编写验证,如下所示

  public partial class User
    {
        public DateDDL DOBDDL { get; set; }

        [pmrms.Attributes.DateGreaterThanToday(ErrorMessage="testting")]
        public DateDDL JoinedOnDDL { get; set; }
}

但客户端验证无法设置或无法正常工作。 GetClientValidationRules方法未在自定义验证程序类

中加载
 protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            return new ValidationResult(ErrorMessage);
        }
        public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            return new[] { new ModelClientValidationDateGreaterThanToday(ErrorMessage) };
        }
        public class ModelClientValidationDateGreaterThanToday : ModelClientValidationRule
        {
            public ModelClientValidationDateGreaterThanToday(string errorMessage)
            {
                ErrorMessage = errorMessage; 
            }
        }

0 个答案:

没有答案