Jon*_*ood 7 asp.net-mvc asp.net-mvc-3
我是WebForms到MVC的新手.我有类型的视图模型字段bool?
,默认情况下,EditorFor()
将此字段呈现为具有"未设置"选项的DropDownList.我更喜欢将其渲染为CheckBox,如果值为null,则将其设置为未选中.
字段名称是RFP.DatesFlexible
,因此我在视图中编写了以下标记:
<input type="checkbox" id="RFP_DatesFlexible" name="RFP.DatesFlexible" />
<label for="RFP_DatesFlexible">My Dates are Flexible</label>
Run Code Online (Sandbox Code Playgroud)
但这不起作用.结果始终为null并且ModelState.IsValid
为false.
谁能说我怎么能做这个工作?
编辑
这是我最终得到的代码,似乎工作正常.
@Html.CheckBox("RFP.DatesFlexible", Model.RFP.DatesFlexible ?? false)
@Html.Label("RFP.DatesFlexible", "My Dates are Flexible")
Run Code Online (Sandbox Code Playgroud)
标签与复选框正确关联,以便单击文本将切换复选框.
像这样的东西?
楷模:
public class MyViewModel
{
public ViewModel2 RDP { get; set; }
}
public class ViewModel2
{
public bool? DatesFlexible { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public ActionResult TestBool()
{
return View(new MyViewModel { RDP = new ViewModel2() });
}
[HttpPost]
public ActionResult TestBool(MyViewModel vm)
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
视图:
@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" />
}
Run Code Online (Sandbox Code Playgroud)