Список <string>PropertyName не отображается в modelState.errors - PullRequest
0 голосов
/ 08 апреля 2010

Представьте себе, модель, подобную этой:

[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;
    }
}

Когда модель проверяется контроллером, любой из подчиненных адресов корректно проверяется, и любые ошибки возвращаются как ошибки состояния модели.Однако ошибка пользовательского атрибута никогда не добавляется в состояние модели, даже если он проверяет ложность.

Кажется, что это должно сработать, проверка вызывается, и я могу пройти через это - он просто никогда не будет добавлен в состояние модели.

Идеи?

1 Ответ

0 голосов
/ 08 апреля 2010

Имеются две разные проверки, и вы хотите вернуть одну из двух разных ошибок, поэтому ее следует разделить на два атрибута. В частности, вы не можете установить свойство ErrorMessage из самого метода IsValid (). Эти экземпляры атрибута должны быть неизменными. Первый раз, когда свойство ErrorMessage читается платформой, вот и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...