データ注釈を使用したモデル検証のエラーメッセージ 質問する

データ注釈を使用したモデル検証のエラーメッセージ 質問する

次のクラスがあるとします:

using System.ComponentModel.DataAnnotations;

public class Book{
   public Contact PrimaryContact{get; set;}
   public Contact SecondaryContact{get; set;}

   [Required(ErrorMessage="Book name is required")]
   public string Name{get; set;}
}
public class Contact{
    [Required(ErrorMessage="Name is required")]
    public string Name{get; set;}
}

を使用しContactての各インスタンスに個別のエラー メッセージを表示する簡単な方法はありますか? たとえば、インスタンスに名前がない場合、エラーには「主な連絡先名が必要です」と表示されます。BookDataAnnotationsPrimaryContact

私の現在の解決策は、モデルの状態をチェックしてフィールド エラーがないか確認する検証サービスを作成し、そのエラーを削除して、必要な特定の言語を使用してエラーを再度追加することです。

ベストアンサー1

これは私が知っている唯一の方法ですが、決してきれいではありません。サブクラス化と MetaData クラスを使用してエラー メッセージを「オーバーライド」する必要があります。

public class Book
{
    public PrimaryContact PrimaryContact { get; set; }
    public SecondaryContact SecondaryContact { get; set; }

    [Required(ErrorMessage = "Book name is required")]
    public string Name { get; set; }
}

public class Contact
{
    [Required(ErrorMessage = "Name is required")]
    public string Name { get; set; }
}

[MetadataType(typeof(PrimaryContactMD))]
public class PrimaryContact : Contact
{
    class PrimaryContactMD
    {
        [Required(ErrorMessage = "Primary Contact Name is required")]
        public string Name { get; set; }
    }
}

[MetadataType(typeof(SecondaryContactMD))]
public class SecondaryContact : Contact
{
    class SecondaryContactMD
    {
        [Required(ErrorMessage = "Secondary Contact Name is required")]
        public string Name { get; set; }
    }
}

おすすめ記事