Представьте себе, модель, подобную этой:
[AddressValidation]
public AddressType[] Address { get; set; }
internal class AddressValidation : ValidationAttribute
{
public override bool IsValid(object value)
{
//Assume we are valid
var isValid = true;
//Cast to something useful
var addresses = (AddressType[])value;
var defaultAddresses = addresses.Count(a => a.AddressCode == AddressCodeEnum.@default);
if (defaultAddresses == 0)
{
ErrorMessage = "One address must be the default address";
isValid = false;
}
else if (defaultAddresses > 1)
{
ErrorMessage = "Only one address can be the default address";
isValid = false;
}
//Return the result
return isValid;
}
}
Когда модель проверяется контроллером, любой из подчиненных адресов корректно проверяется, и любые ошибки возвращаются как ошибки состояния модели.Однако ошибка пользовательского атрибута никогда не добавляется в состояние модели, даже если он проверяет ложность.
Кажется, что это должно сработать, проверка вызывается, и я могу пройти через это - он просто никогда не будет добавлен в состояние модели.
Идеи?