I HAVER prostą listę przycisku radiowego na mojej stronie, że render z następujących moim zdaniem:ASP.NET MVC Html.RadioButton Wyjątek
<label for="gender">Gender</label>
<%= Html.RadioButton("gender", 1) %> Male
<%= Html.RadioButton("gender", 2) %> Female
<%= Html.ValidationMessage("gender") %>
Zauważ, że gdy użytkownik początkowo widzi to wejście, ani przycisk jest zaznaczona. Walidacja ma na celu zmuszenie ich do wybrania i nieprzyjęcia wartości domyślnej. Dlatego te dwa przyciski radiowe są zobowiązane do wartości pustych int nieruchomości w moim modelu zadeklarowanej jako:
public int? gender { get; set; }
Więc jeśli nie wybrać przycisk i przesłać na stronę, właściwość płci będzie zerowa wskazuje, że nie wybrał. Poniższy walidacja nazywany jest przez kontroler podczas postu:
if (!gender.HasValue)
ModelState.AddModelError("gender", "gender required");
Ale, jeśli uwierzytelnienie nie powiedzie się (nie wyboru), a następnie na etapie renderowania, następujący wyjątek jest generowany przez framework MVC:
System.NullReferenceException was unhandled by user code
Message="Object reference not set to an instance of an object."
Szukając rozwiązania tego problemu, zauważyłem, że kilku miało ten problem. Używam ASP.NET MVC 1.0. Znalazłem to miejsce w kodzie, w którym ten błąd jest generowany za pomocą .NET Reflectora.
Pytanie, jak to zrobić, aby działało poprawnie?
EDIT: aby dodać 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
Czy można wyświetlić ślad stosu? lub linii, w której wystąpił błąd? – tvanfosson