Как бы вы проверили флажок в ASP.Net MVC 2? - PullRequest
8 голосов
/ 04 мая 2010

Используя MVC2, у меня есть простая ViewModel, которая содержит поле bool, которое отображается в представлении как флажок. Я хотел бы подтвердить, что пользователь установил флажок. Атрибут [Required] в моей ViewModel, похоже, не работает. Я полагаю, что это потому, что поле формы непроверенного флажка фактически не передается обратно во время POST, и, следовательно, проверка не выполняется на нем.

Существует ли стандартный способ обработки флажка «обязательной» проверки в MVC2? или я должен написать собственный валидатор для него? Я подозреваю, что пользовательский валидатор также не будет выполнен по причине, указанной выше. Я застрял, проверяя это явно в моем контроллере? Это кажется грязным ...

Любое руководство будет оценено.

Scott

РЕДАКТИРОВАТЬ ДЛЯ ЯРКОСТИ: Как указано в комментариях ниже, это флажок типа «согласен с нашими условиями», и поэтому «не проверено» является действительным ответом, поэтому я действительно ищу «проверено» Проверка.

Ответы [ 4 ]

14 голосов
/ 04 мая 2010

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

public class BooleanRequiredToBeTrueAttribute : RequiredAttribute
{
    public override bool IsValid(object value)
    {
        return value != null && (bool)value;
    }
}
12 голосов
/ 03 февраля 2011

Я обычно использую:

[RegularExpression("true")]
6 голосов
/ 12 сентября 2011

Если вы не хотели создавать свой собственный валидатор и все еще хотели использовать существующие атрибуты в модели, вы можете использовать:

[Range(typeof(bool), "true", "true", ErrorMessage="You must accept the terms and conditions.")]

Это гарантирует, что диапазон логического значения находится между истиной и истиной. Однако, хотя этот метод будет работать, я все же предпочел бы использовать собственный валидатор в этом сценарии. Я просто подумал, что упомяну это как альтернативный вариант.

0 голосов
/ 05 мая 2010

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

Object.Property = !String.IsNullOrEmpty(Request.Form["NAME"]);

Может быть, это будет вам полезно.

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