首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET MVC Html.RadioButton异常

ASP.NET MVC Html.RadioButton异常
EN

Stack Overflow用户
提问于 2009-04-06 18:42:04
回答 5查看 16.1K关注 0票数 16

我在我的页面上有一个简单的单选按钮列表,我在我的视图中呈现了以下内容:

代码语言:javascript
复制
<label for="gender">Gender</label>
<%= Html.RadioButton("gender", 1) %> Male
<%= Html.RadioButton("gender", 2) %> Female
<%= Html.ValidationMessage("gender") %>

请注意,当用户最初看到此输入时,这两个按钮都没有被选中。验证的存在是为了迫使他们做出选择,并且不接受默认设置。因此,在我的模型中,这两个单选按钮被绑定到一个可以为空的int属性,声明为:

代码语言:javascript
复制
public int? gender { get; set; }

因此,如果他们不选择按钮并提交页面,则gender属性将为null,表示他们没有选择按钮。控制器在post期间调用以下验证:

代码语言:javascript
复制
if (!gender.HasValue)
    ModelState.AddModelError("gender", "gender required");

但是,如果验证失败(他们没有选择),那么在呈现阶段,MVC框架会抛出以下异常:

代码语言:javascript
复制
System.NullReferenceException was unhandled by user code
  Message="Object reference not set to an instance of an object."

在寻找这个问题的解决方案时,我注意到有几个有这个问题。我使用的是ASP.NET MVC1.0。我使用.NET反射器在代码中找到了抛出此错误的位置。

问题是如何让它正确地工作?

编辑:添加堆栈跟踪:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/722655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档