Asp.net mvc 3 MVC3/EF CustomValidator模型中的两个字段
使用MVC3和EF4.1如何在客户端和服务器上验证视图模型中的多个字段 我有一个开始日期文本框(可以修改),我在一个隐藏字段中有原始开始日期。当用户提交表单时,我希望检查修改后的开始日期是否不超过原始开始日期的任意一侧一个月 我不知道如何使用DataAnnotation和CustomValidation实现这一点(或者我走错了路)?这是我一直从事的工作的一个例子:Asp.net mvc 3 MVC3/EF CustomValidator模型中的两个字段,asp.net-mvc-3,entity-framework-4.1,data-annotations,customvalidator,Asp.net Mvc 3,Entity Framework 4.1,Data Annotations,Customvalidator,使用MVC3和EF4.1如何在客户端和服务器上验证视图模型中的多个字段 我有一个开始日期文本框(可以修改),我在一个隐藏字段中有原始开始日期。当用户提交表单时,我希望检查修改后的开始日期是否不超过原始开始日期的任意一侧一个月 我不知道如何使用DataAnnotation和CustomValidation实现这一点(或者我走错了路)?这是我一直从事的工作的一个例子: [MetadataType(typeof(Metadata.MyUserMetaData))] public partial cla
[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;
}
}
public类修改开始日期:ValidationAttribute,IClientValidatable
{
受保护的重写ValidationResult有效(对象值,ValidationContext ValidationContext)
{
//如何从对象值中获取多个字段值?
}
public IEnumerable GetClientValidationRules(Modelmetadata元日期、ControllerContext上下文)
{
var规则=新ModelClientValidationRule
{
ErrorMessage=FormatErrorMessage(metadata.GetDisplayName()),
ValidationType=“修正开始日期”
};
收益率-收益率规则;
}
}
我知道我仍然需要将jQuery添加到此验证器的视图中。在您的模型类上实现
IValidatableObject
,而不是使用数据注释-在交叉验证的场景中更简单、更清晰
如果仍要使用ValidationAttribute
,则IsValid
方法中有两个参数:
表示指定属性的属性的有效值value
是验证属性的上下文。它还包含context
和ObjectInstance
属性,用于访问整个模型及其类型,因此您可以强制转换实例并访问其他属性ObjectType