ASP.Net MVC3, аннотации данных и динамическая проверка - PullRequest
4 голосов
/ 18 ноября 2011

Я создаю приложение MVC 3, которое должно устанавливать правила проверки данных во время выполнения на основе внешних данных (например, Required, MinimumLength, MaximumLength).Кажется естественным использовать аннотации данных в MVC 3, однако атрибуты свойств, которые предоставляют метаданные проверки, устанавливаются во время компиляции.

Существует ли шаблон для использования аннотаций данных с метаданными, предоставляемыми во время выполнения?

Пример:

public string Text { get; set; }

public void SetIsRequired(string propertyName, bool required)
{
    // Somehow find the property 'propertyName' and create/remove a RequiredAttribute
    // on that property
}

...
SetIsRequired("Text", true);

Мне известно о TypeDescriptor , но я не вижу опции для изменения атрибутов свойства экземпляра (только атрибуты уровня класса в экземпляреили атрибуты уровня свойства для типа).

Ответы [ 2 ]

4 голосов
/ 18 ноября 2011

Кажется естественным использовать аннотации данных в MVC 3

Не для меня.Мне никогда не нравились аннотации данных из-за их декларативного характера.И выполнение проверки декларативным способом ограничивает возможности.Мне всегда нравилось и пользуюсь FluentValidation.NET .

1 голос
/ 18 ноября 2011

Вероятно, вы могли бы использовать интерфейс IDataErrorInfo (который может использовать MVC) для написания ваших собственных, динамических правил проверки.

...