Je Haver une liste simple bouton radio sur ma page que je rends à ce qui suit à mon avis:ASP.NET MVC Html.RadioButton Exception
<label for="gender">Gender</label>
<%= Html.RadioButton("gender", 1) %> Male
<%= Html.RadioButton("gender", 2) %> Female
<%= Html.ValidationMessage("gender") %>
Notez que lorsque l'utilisateur voit d'abord cette entrée, ni bouton est sélectionné. La validation est là pour les forcer à choisir et à ne pas accepter un défaut. Par conséquent, ces deux boutons radio sont liés à une propriété nullable int dans mon modèle déclaré que:
public int? gender { get; set; }
Donc, s'ils ne choisissent pas un bouton, et soumettre la page, la propriété de genre sera indiquant nul qu'ils n'a pas sélectionné. La validation suivante est appelée par le contrôleur au cours de la poste:
if (!gender.HasValue)
ModelState.AddModelError("gender", "gender required");
Mais, si la validation échoue (ils n'ont pas choisi), puis lors de la phase de rendu, l'exception suivante est lancée par le framework MVC:
System.NullReferenceException was unhandled by user code
Message="Object reference not set to an instance of an object."
Dans la recherche d'une solution à ce problème, j'ai noté que plusieurs avaient ce problème. J'utilise ASP.NET MVC 1.0. J'ai trouvé l'endroit dans le code où cette erreur est lancée en utilisant .NET Reflector.
La question est comment faire pour que cela fonctionne correctement?
EDIT: ajouter 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
Pouvez-vous afficher la trace de la pile? ou la ligne où l'erreur se produit? – tvanfosson