【发布时间】:2014-08-28 23:00:51
【问题描述】:
我正在使用带有 EF Code First 的 MVC 5,并且有一个包含 bool 的 View 模型:
public bool MyCheckbox { get; set; }
我在 View 的 get 中初始化它:
model.MyCheckbox = true;
在视图中:
@Html.CheckBoxFor(m => m.MyCheckbox)
渲染为:
<input checked="checked" data-val="true" data-val-required="The field is required." id="MyCheckbox" name="MyCheckbox" type="checkbox" value="true" />
<input name="MyCheckbox" type="hidden" value="false" />
我在视图上的一个按钮触发了一个 Ajax POST 到我想查看复选框值的控制器:
bool bValue = Request["MyCheckbox"] == "true";
但是Request["MyCheckbox"] 的值是“true,false”,因为name="MyCheckbox" 有额外的隐藏字段。
如何使用 Request["..."] 在控制器中查看此复选框的值并理解它(真或假)?
我在 View 模型中还有另一个 bool 成员,我有意在隐藏字段中使用它。在模型中:
bool MyHiddenBool { get; set; }
在控制器中获取:
model.MyHiddenBool = true;
在视图中:
@Html.HiddenFor(x => x.MyHiddenBool)
在控制器中(通过 Ajax POST):
bool AnotherBool = Request["MyHiddenBool"] == "true";
但是Request["MyHiddenBool"] 的值不是“true”和“false”而是“True”或“False”。
导致这种不一致的原因是什么?如何在我的视图中可靠地查看这两种 bool 方法的值?
【问题讨论】:
-
您发布了一个很好的问题,实际上我也遇到了同样的问题,我想在数据库中将状态保存为真/假。我搜索了几乎所有内容,但没有什么与我有太大关系。您能否提供有关您使用的 ViewModel 概念的详细说明。
标签: asp.net-mvc