Мое приложение MVC использует классическое действие редактирования.У меня есть модель:
public class Case
{
[RequiredEx]
public string Id { get; set; }
public string TicketNumber { get; set; }
[RequiredEx]
public Account Customer { get; set; }
}
, где RequiredEx - это пользовательский атрибут проверки
public class RequiredExAttribute : RequiredAttribute
{
public bool IsRequired { get; set; }
public override bool IsValid(object value)
{
switch (value)
{
case null: return false;
//here goes some validation logic
default: return base.IsValid(value);
}
}
public override bool RequiresValidationContext
{
get
{
return IsRequired;
}
}
}
, в то время как дочерний класс Account
не имеет атрибута Required
или RequiredEx
, все работает нормально, но если я добавлю это attriube к одному из его полей, он прекратит валидацию самого свойства Customer
, вместо того, чтобы проверять Customer.Id
, Customer.Name
и т. д. В форме редактирования я присваиваю только Customer.Id
роприлично, этого мне достаточно,Я могу отфильтровать ненужные ошибки ModelState, но, тем не менее, могу принудительно проверить Customer
свойство, MVC просто не видит всего этого, пока я не удалю все обязательные атрибуты из дочернего класса.Каково решение этой проблемы?