У меня есть проект ASP.NET MVC с формой. В методе Action, который обрабатывает глагол POST, у меня есть пользовательская реализация IModelBinder
, которая связывает данные формы с моим экземпляром модели. Если есть ошибки, я использую bindingContext.ModelState.SetAttemptedValue()
и bindingContext.ModelState.AddModelError()
, чтобы сохранить отправленное значение и сообщение об ошибке в ModelState
.
Это прекрасно работает, и я вижу ожидаемое поведение моих элементов управления вводом, которые отображаются с Html.TextBox()
(который вызывает до Html.InputHelper()
). Когда я использую Html.CheckBox()
(который также вызывает Html.InputHelper()
), состояние моего CheckBox будет NOT , выводится в тег <input />
.
Мне кажется, что Html.InputHelper()
метод не использует AttemptedValue из ModelState для полей ввода типа CheckBox.
Вот код из ASP.NET MVC Html.InputHelper()
метод .
Почему CheckBox предпринятьValue не выводится во входной тег. Есть ли что-то, чего мне здесь не хватает, или мне нужно вручную обработать этот случай, проверив ModelState и самостоятельно установив атрибут tag?
Обновление 11/09
Вот вызов HtmlHelpers
, который я использую для вывода CheckBox:
<%= Html.CheckBox("IsDerived") %>
А вот вызов, который я использую для регистрации значения:
string isDerivedRequestValue = !string.IsNullOrEmpty(bindingContext.HttpContext.Request["IsDerived"]) ? bindingContext.HttpContext.Request.Form.GetValues("IsDerived") [0] : null;
bindingContext.ModelState.SetAttemptedValue("IsDerived", isDerivedRequestValue);