使用MVC3和EF4.1如何在客戶端和服務器上驗證我的視圖模型中的多個字段?MVC3/EF CustomValidator模型中的兩個字段
我有一個開始日期文本框(可以修改),我有隱藏字段中的原始開始日期。當用戶提交表格時,我想檢查修改的開始日期不超過原始開始日期的任何一個月的一個月。
我不明白如何使用DataAnnotation和CustomValidation完成這項工作(或者我可能會走錯路)?這是whay我一直在工作的例子:
[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添加到視圖對於這個驗證器。
謝謝,這幫助了很多。 – nrg