Учитывая следующие классы:
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
экземпляр ошибка считала бы "основное контактное лицо, требуется".
Мое текущее решение состоит в том, чтобы создать сервис проверки, который проверяет образцовое состояние на полевые ошибки, затем удалите, сказал, что ошибки и добавляют их назад использование определенного языка, который я хотел бы.
Это единственный способ, которым я знаю об этом, но он далеко не чистый. Он включает использование подклассов и классов 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; }
}
}