Asp.net mvc 默认情况下,在MVC中为布尔属性选择单选按钮
我有一个模型如下Asp.net mvc 默认情况下,在MVC中为布尔属性选择单选按钮,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我有一个模型如下 public partial class Approval { public bool IsApproved { get; set; } } 在视图中渲染模型时,我正在使用IsApproved属性的单选按钮 @Html.RadioButtonFor(model => model.IsApproved, "Yes", htmlAttributes: new { @id = "Approve"}) @Html.Label("Yes", htmlAttributes:
public partial class Approval
{
public bool IsApproved { get; set; }
}
在视图中渲染模型时,我正在使用IsApproved属性的单选按钮
@Html.RadioButtonFor(model => model.IsApproved, "Yes", htmlAttributes: new { @id = "Approve"})
@Html.Label("Yes", htmlAttributes: new { @style = "padding-right:10px;vertical-align:top" })
@Html.RadioButtonFor(model => model.IsApproved, "No", htmlAttributes: new { @id = "Reject", })
@Html.Label("No", htmlAttributes: new { @style = "padding-right:10px;vertical-align:top" })
提交时,我得到的是ModelState.IsValid false,因为IsApproved是bool类型,并且我在视图中传递字符串
如果我改变单选按钮如下
@Html.RadioButtonFor(model => model.IsApproved, Model.IsApproved, htmlAttributes: new { @id = "Approve"})
@Html.RadioButtonFor(model => model.IsApproved, !Model.IsApproved, htmlAttributes: new { @id = "Reject", })
默认情况下,我不希望在页面加载时选中单选按钮
建议正确的方法控制器:
public ActionResult Index()
{
return View(Approval)
{
IsApproved = true;
});
}
[HttpPost]
public ActionResult Index(Approval Approvalmodel)
{
return Content("IsApproved: " + Approvalmodel.IsApproved);
}
视图:
@型号批准
@使用(Html.BeginForm())
{
@RadioButton(model=>model.IsApproved,“true”,新的{id=“Approved”})
@Label(“Yes”,htmlAttributes:new{@style=“padding right:10px;vertical align:top”})
@RadioButton(model=>model.IsApproved,“false”,新的{id=“Rejected”})
@Label(“No”,htmlAttributes:new{@style=“padding right:10px;vertical align:top”})
好啊
}
对于同一属性,您有两个控件,这令人困惑。当然,IsApproved
应该是的一个复选框,我知道它应该是一个下拉列表,但要求有一个单选按钮,值必须是“true”和“false”,这两个值绑定到一个布尔值(不是“yes”和“no”)。如果不想选择按钮,则需要将属性设置为bool?
(可为空)。而且你的“标签”不是真正的标签(它们与按钮没有关系-点击它们什么也不做)
@model Approval
@using (Html.BeginForm())
{
@Html.RadioButtonFor(model => model.IsApproved, "true", new { id = "Approved" })
@Html.Label("Yes", htmlAttributes: new { @style = "padding-right:10px;vertical-align:top" })
@Html.RadioButtonFor(model => model.IsApproved, "false", new { id = "Rejected" })
@Html.Label("No", htmlAttributes: new { @style = "padding-right:10px;vertical-align:top" })
<button type="submit">OK</button>
}