3 つのドロップダウン (mm、dd、yyyy) で構成される日付の EditorFor テンプレートがあります。以下は、正常に機能するいくつかの検証で構成される同じクラスです
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;
}
}