1

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);
        }
    }
}
4

0 に答える 0