Можно ли предоставить значение времени выполнения для валидатора StringLength в MVC 3? - PullRequest
6 голосов
/ 24 ноября 2011

Я проверяю поле в MVC 3 с аннотациями данных:

[StringLength(50, MinimumLength=5)]
public string MyText { get; set; }

Есть ли способ предоставить динамическое значение там? Примерно так:

[StringLength(50, MinimumLength=GetMinimumLengthValueFromDb())]
public string MyText { get; set; }

Мое последнее средство - использовать удаленный валидатор. Если я не найду способ сделать это с StringLength, я буду использовать RemoteValidator.

1 Ответ

7 голосов
/ 24 ноября 2011

Нет, только атрибуты времени компиляции, такие как константы, могут быть предоставлены. Это ограничение применяется ко всем атрибутам C # и не относится к атрибутам аннотаций данных, но в случае StringLengthAttribute подразумевает, что есть способ предоставить другую длину во время выполнения.

Вам потребуется использовать другой вид проверки или, возможно, создать собственный атрибут, наследующий от StringLengthAttribute, который принимает Type и имя метода этого типа в качестве источника значения длины. Этот подход будет аналогичен тому, который используется CustomValidationAttribute, который принимает имена ValidatorType и Method в качестве источников для проверки.

...