次のクラスがあるとします:
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
ての各インスタンスに個別のエラー メッセージを表示する簡単な方法はありますか? たとえば、インスタンスに名前がない場合、エラーには「主な連絡先名が必要です」と表示されます。Book
DataAnnotations
PrimaryContact
私の現在の解決策は、モデルの状態をチェックしてフィールド エラーがないか確認する検証サービスを作成し、そのエラーを削除して、必要な特定の言語を使用してエラーを再度追加することです。
ベストアンサー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; }
}
}