【问题标题】:Radio Button is selected by default in MVC for a Bool Attribute在 MVC 中默认为 Bool 属性选择单选按钮
【发布时间】:2015-03-18 23:46:59
【问题描述】:

我有一个模型如下

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 类型,我在 View 中传递字符串

如果我像下面这样更改单选按钮

@Html.RadioButtonFor(model => model.IsApproved, Model.IsApproved, htmlAttributes: new { @id = "Approve"})
@Html.RadioButtonFor(model => model.IsApproved, !Model.IsApproved, htmlAttributes: new { @id = "Reject", })

默认情况下,单选按钮会在我不想要的页面加载时被选中。

建议正确的方法

【问题讨论】:

  • 令人困惑的是,您有 2 个控件用于同一属性。当然IsApproved 应该是CheckBoxFor
  • 我知道它应该是一个下拉,但要求是有单选按钮
  • 值必须是“true”和“false”,它们绑定到boolean(不是“yes”和“no”)。如果您不想选择按钮,则需要将属性设置为bool?(可为空)。而且你的“标签”不是真正的标签(它们与按钮没有关系——点击它们没有任何作用)

标签: asp.net-mvc asp.net-mvc-5


【解决方案1】:

控制器:

public ActionResult Index()
{
    return View(Approval)
    {
        IsApproved = true;
    });
}

[HttpPost]
public ActionResult Index(Approval Approvalmodel)
{
    return Content("IsApproved: " + Approvalmodel.IsApproved);
}

查看:

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

【讨论】:

    猜你喜欢
    • 2012-05-25
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    相关资源
    最近更新 更多