我是从 WebForms 转向 MVC 的新手。我有类型的视图模型字段bool?
并且,默认情况下,EditorFor()
将此字段呈现为带有“未设置”选项的 DropDownList。我更愿意将其呈现为复选框,如果该值为空,只需将其设置为未选中即可。
字段名称是RFP.DatesFlexible
所以我在我看来写了以下标记:
<input type="checkbox" id="RFP_DatesFlexible" name="RFP.DatesFlexible" />
<label for="RFP_DatesFlexible">My Dates are Flexible</label>
但这行不通。结果始终为 null 并且ModelState.IsValid
是假的。
谁能告诉我如何才能做到这一点?
EDIT
这是我最终得到的代码,看起来工作正常。
@Html.CheckBox("RFP.DatesFlexible", Model.RFP.DatesFlexible ?? false)
@Html.Label("RFP.DatesFlexible", "My Dates are Flexible")
标签与复选框正确关联,因此单击文本将切换复选框。
像这样的东西吗?
Models:
public class MyViewModel
{
public ViewModel2 RDP { get; set; }
}
public class ViewModel2
{
public bool? DatesFlexible { get; set; }
}
控制器:
public ActionResult TestBool()
{
return View(new MyViewModel { RDP = new ViewModel2() });
}
[HttpPost]
public ActionResult TestBool(MyViewModel vm)
{
return View();
}
View:
@model mvc_testing_2.Models.MyViewModel
@using (Html.BeginForm())
{
@Html.CheckBox("RDP.DatesFlexible",
Model.RDP.DatesFlexible != null && (bool)Model.RDP.DatesFlexible)
<input type="submit" value="go" />
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)