なんらかのイントラネット アプリケーションでクライアントのブラウザを制御していない限り、Javascript だけに頼るべきではないと思います。アプリが公開されている場合は、クライアント側とサーバー側の両方の検証があることを確認してください。
また、モデル オブジェクト内にサーバー側の検証を実装するよりクリーンな方法は、以下に示すカスタム検証属性を使用して実行できます。これにより、検証が一元化され、コントローラーで日付を明示的に比較する必要がなくなります。
public class MustBeGreaterThanAttribute : ValidationAttribute
{
private readonly string _otherProperty;
public MustBeGreaterThanAttribute(string otherProperty, string errorMessage) : base(errorMessage)
{
_otherProperty = otherProperty;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var otherProperty = validationContext.ObjectInstance.GetType().GetProperty(_otherProperty);
var otherValue = otherProperty.GetValue(validationContext.ObjectInstance, null);
var thisDateValue = Convert.ToDateTime(value);
var otherDateValue = Convert.ToDateTime(otherValue);
if (thisDateValue > otherDateValue)
{
return ValidationResult.Success;
}
return new ValidationResult(FormatErrorMessage(validationContext.DisplayName));
}
}
これは、次のようにモデルに適用できます。
public class MyViewModel
{
[MustBeGreaterThan("End", "Start date must be greater than End date")]
public DateTime Start { get; set; }
public DateTime End { get; set; }
// more properties...
}