У меня есть простой список переключателей на моей странице, который я визуализирую со следующим:
<label for="gender">Gender</label>
<%= Html.RadioButton("gender", 1) %> Male
<%= Html.RadioButton("gender", 2) %> Female
<%= Html.ValidationMessage("gender") %>
Обратите внимание, что когда пользователь изначально видит этот ввод, ни одна из них не выбрана. Валидация заключается в том, чтобы заставить их выбирать и не принимать значение по умолчанию. Следовательно, эти два переключателя привязаны к объекту с нулевым значением int в моей модели, объявленной как:
public int? gender { get; set; }
Поэтому, если они не выбирают кнопку и не представляют страницу, свойство gender будет null, что указывает на то, что они не выбрали. Следующее подтверждение вызывается контроллером во время публикации:
if (!gender.HasValue)
ModelState.AddModelError("gender", "gender required");
Но если проверка не удалась (они не выбрали), то во время фазы рендеринга среда MVC создает следующее исключение:
System.NullReferenceException was unhandled by user code
Message="Object reference not set to an instance of an object."
В поисках решения этой проблемы я заметил, что некоторые из них столкнулись с этой проблемой. Я использую ASP.NET MVC 1.0. Я нашел место в коде, где эта ошибка генерируется с помощью .NET Reflector.
Вопрос в том, как правильно сделать эту работу?
EDIT: добавить stacktrace:
System.NullReferenceException was unhandled by user code
Message="Object reference not set to an instance of an object."
Source="System.Web.Mvc"
StackTrace:
at System.Web.Mvc.HtmlHelper.GetModelStateValue(String key, Type destinationType)
at System.Web.Mvc.Html.InputExtensions.InputHelper(HtmlHelper htmlHelper, InputType inputType, String name, Object value, Boolean useViewData, Boolean isChecked, Boolean setId, Boolean isExplicitValue, IDictionary`2 htmlAttributes)
at System.Web.Mvc.Html.InputExtensions.RadioButton(HtmlHelper htmlHelper, String name, Object value, Boolean isChecked, IDictionary`2 htmlAttributes)
at System.Web.Mvc.Html.InputExtensions.RadioButton(HtmlHelper htmlHelper, String name, Object value, IDictionary`2 htmlAttributes)
at System.Web.Mvc.Html.InputExtensions.RadioButton(HtmlHelper htmlHelper, String name, Object value)
at ASP.views_vbs_register_aspx.__RenderregisterContent(HtmlTextWriter __w, Control parameterContainer) in c:\Users\David\Documents\BellevueProject\Bellevue\BellevueTeachers\Forms\Views\VBS\Register.aspx:line 42