我有一个简单的要求,可以在MVC 4中向表单发布一个布尔值。我使用Html.CheckBox而不是Html.CheckBoxFor,因为布尔值可以为空。
我的代码如下所示:
@Html.CheckBox("IsNonUk", Model.IsNonUk.GetValueOrDefault(false))
此标记生成的HTML如下所示:
<input id="IsNonUk" name="IsNonUk" type="checkbox" value="true" />
<input name="IsNonUk" type="hidden" value="false" />
我理解生成隐藏字段背后的原因,但问题是使用Fiddler检查帖子后显示IsNonUk值被回发两次,并且这两个表单变量的值都为空。
我做错了什么?
==编辑以回应评论
控制器操作签名如下所示:
public ActionResult CreateSelfPay(CreateSelfPayViewModel viewModel)
CreateSelfPayViewModel有一个属性:
public bool? IsNonUk { get; set; }
由于我无法简单解释的原因,该属性必须可以为空。设计中不可能使用true,false和unspecified下拉列表。我很高兴将null值渲染为unchcecked。
正如我所说,Fiddler揭示了表单变量被回发两次,都是null。
中号