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>
}