Validation MVC - Nullable Bool - Force True / False Selection с помощью радиобуттоновC#

Место общения программистов C#
Ответить
Anonymous
 Validation MVC - Nullable Bool - Force True / False Selection с помощью радиобуттонов

Сообщение Anonymous »

В приложении MVC < /p>

, где поле является нулевым типом Bool и представлено в виде радиобаттона < /p>

Как можно применяться на стороне клиента путем настройки атрибута данных < /p>

используется проверка на стороне клиента (jquery ненавязчивая) < /p>

В этом стоит, у меня есть шаблонная нулевые лодки, которые будут представлены пользователю в качестве радиопроизводительных кнопок. Есть 3 радиопроизводства, одна для True, одна для false и одна для NULL. Опция TRUE или FALSE (NULL не является действительной опцией, NULL просто означает, что пользователь еще не сделал выбор - TRUE или FALS попробовал следующее, что я нашел как Ответ на тот же вопрос в другом месте < /p>

[Range(typeof(bool), "false", "true", ErrorMessage = "You must make a selection")]
< /code>

Но это никогда не проходит проверку < /p>

Я также просто попробовал < /p>

[Required]
< /code>

Но это не заставляет пользователя сделать выбор < /p>

Дополнительная информация:-< /p> < Br />
Проблема, кажется, существует, когда Bool? Представлено ли Radiobuttons.
При использовании шаблона по умолчанию MVC для Bool? (который представляет собой выпадающий список с 3 параметрами, «не установлен», «true», «false», затем валидация работает, как и ожидалось. Радиопроизводительные кнопки функциональны и сохраняют правильное состояние в базе данных, но валидация не работает. P> модель :-< /p>

public class SomeModel
{
[Required]
public string Name { get; set; }

[Required]
public bool? SomeBool { get; set; }
}
< /code>

Просмотр:-< /p>

@using (Html.BeginForm())
{
@Html.ValidationSummary(true)


@Html.LabelFor(model => model.Name)

@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)

@Html.LabelFor(model => model.SomeBool)

@Html.EditorFor(model => model.SomeBool)
@Html.ValidationMessageFor(model => model.SomeBool)





}
< /code>

Приведенное выше работает, как и ожидалось без шаблона редактора для Bool, но не для радиопроизводительных кнопок. < /p>

Шаблон радиопроизводства:-< /p>

@model bool?

@{
Dictionary yesAttrs = new Dictionary();
Dictionary noAttrs = new Dictionary();
Dictionary nullAttrs = new Dictionary();

yesAttrs.Add("id", ViewData.TemplateInfo.GetFullHtmlFieldId("") + "Yes");
noAttrs.Add("id", ViewData.TemplateInfo.GetFullHtmlFieldId("") + "No");
nullAttrs.Add("id", ViewData.TemplateInfo.GetFullHtmlFieldId("") + "NA");

if (Model.HasValue && Model.Value)
{
yesAttrs.Add("checked", "checked");
}
else if (Model.HasValue && !Model.Value)
{
noAttrs.Add("checked", "checked");
}
else
{
nullAttrs.Add("checked", "checked");
}
}

@Html.RadioButtonFor(x => x, "true", yesAttrs) Yes
@Html.RadioButtonFor(x => x, "false", noAttrs) No

@Html.RadioButtonFor(x => x, "null", nullAttrs) N/A


< /code>

Проблема будет связана с атрибутами данных проверки на стороне клиента, не создаваемых для радиопроизводительных кнопок < /p>

Подробнее здесь: https://stackoverflow.com/questions/387 ... diobuttons
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»