Как программно включить / выключить атрибут проверки аннотации данных - PullRequest
2 голосов
/ 22 сентября 2011

Итак, я использую ASP.NET MVC 3 и Entity Framework 4.1 (сначала код).

У меня есть такой класс:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    [Range(18, 99)]
    public int Age { get; set; }
}

Проверка диапазона запущенаправильно.Но, например, в некоторых ситуациях я хотел бы изменить диапазон для атрибута Age.Или даже выключите его.Как я могу сделать это, не меняя свой класс Model?Это возможно сделать программно?

Ответы [ 3 ]

1 голос
/ 22 сентября 2011

Вы можете использовать интерфейс IValidatableObject и определить пользовательские правила проверки.

Смотрите мой ответ по адресу:

Использование аннотаций данных для создания обязательного поля при поиске другого в форме mvc 3

Обычно это просто вопрос реализации интерфейса и определения того, когда применять ваши правила.

1 голос
/ 11 сентября 2012

Я только что понял решение для этого случая.

Например.У пользователя может быть разрешение на создание лица в возрасте 14 лет.

Перед сохранением модели мы можем вызвать DataContext.GetValidationErrors () и сделать вывод, что единственная проверка ошибок - это то, что мы хотим отключить, а затем установить

DataContext.Configuration.ValidateOnSaveEnabled = false;

Таким образом, мы можем сохранить модель.

0 голосов
/ 22 сентября 2011

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

Вы можете добавить класс для работы с валидаторами, следуя моему ответу на этот вопрос .

...