【发布时间】:2011-08-31 11:23:53
【问题描述】:
使用 MVC3 和 EF4.1 如何在客户端和服务器上验证视图模型中的多个字段?
我有一个开始日期文本框(可以修改),并且我在隐藏字段中有原始开始日期。当用户提交表单时,我想检查修改后的开始日期是否不超过原始开始日期的一个月。
我不知道如何使用 DataAnnotation 和 CustomValidation 来做到这一点(或者我可能走错了路)?这是我一直在使用的一个示例:
[MetadataType(typeof(Metadata.MyUserMetaData))]
public partial class MyUser
{
public System.DateTime DateOfBirth { get; set; }
}
部分类
public class MyUserMetaData
{
[CustomValidation(typeof(AmendedStartDate), "amendedstartdate", ErrorMessage = "Invalid date."]
public DateTime StartDate { get; set; };
public DateTime OriginalStartDate { get; set; };
}
自定义验证器
public class AmendedStartDate : ValidationAttribute, IClientValidatable
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
// How do I get multiple field values from object value?
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(Modelmetadata metadate, ControllerContext context)
{
var rule = new ModelClientValidationRule
{
ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()),
ValidationType = "amendedstartdate"
};
yield return rule;
}
}
我知道我仍然需要将 jQuery 添加到此验证器的视图中。
【问题讨论】:
标签: asp.net-mvc-3 entity-framework-4.1 data-annotations customvalidator