Customer
を検証するメタデータ クラスがありPurchaseDate
ます。
- 最初の注釈 ( ) は、日付部分のみを表示
DataType
するために日付を書式設定するためのものです。EditorFor
- 2 番目の注釈は、カスタム エラー メッセージを含む、値が DateTime であることを確認するためのカスタム検証です。
私の問題は、最初の注釈が2番目の注釈のエラーメッセージをキャンセルすることです。
データ注釈のみを使用してこれら 2 つを結合することは可能ですか? または、日付をフォーマットする必要がありEditorFor
ますか?
[MetadataType(typeof(Customer_Metadata))]
public partial class Customer { }
public class Customer_Metadata
{
[DataType(DataType.Date)]
[MyDate(ErrorMessage = "Invalid purchase date")]
public DateTime? PurchaseDate { get; set; }
}
を置き換えようとすると、同じ問題が発生[DataType(DataType.Date)]
します
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
カスタム エラー メッセージが表示されません。
EDIT
私の主な目標は、レンダリングされた入力フィールドに日付部分のみを表示しながら、カスタムエラーメッセージを表示することです。データ注釈のみで可能ですか?
MyDate
属性は次のとおりです。
public class MyDate : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
DateTime dt;
var test = DateTime.TryParse((value ?? string.Empty).ToString(), out dt);
if (test)
{
return ValidationResult.Success;
}
else
{
return new ValidationResult(ErrorMessage);
}
}
}