【问题标题】:MVC default to checked based on value in itemMVC 默认根据项目中的值进行检查
【发布时间】:2016-12-14 06:40:32
【问题描述】:

我有一个 MVC 5 项目,我们正在从数据库记录创建单选按钮。

它在下面可以正常工作,但必须有一种方法可以不在那里进行 if 检查,并在事后甚至之前附加检查。

如下图所示,两个单选按钮创建的唯一区别是:new { @checked = "checked" }

    @{
        foreach (var item in Model.PaintColor)
        {
            if (item.DefaultChoice == true)
            {
                @Html.RadioButtonFor(m => m.pledge.PaintColorId,
                                        item.ColorId.ToString(),
                                        new { @checked = "checked" }
                                    )
            }
            else
            {
                @Html.RadioButtonFor(m => m.pledge.PaintColorId,
                                        item.ColorId.ToString()
                                    )
            }
            @Html.Label("Color" + item.ColorId, item.ColorDesc)
        }
        <br />
    }

【问题讨论】:

  • 您不会(也不应该)添加new { @checked = "checked" } - RadioButtonFor() 方法会根据您绑定到的属性的值来执行此操作。如果pledge.PaintColorId 的值与ColorId 的值匹配,那么它将被正确选择(这就是模型绑定的工作方式)。而且你不需要.ToString()
  • 斯蒂芬,感谢您为我指明了正确的方向。我现在对此有了更好的理解。
  • 作为旁注,你 &lt;label&gt; 什么都不做(点击它不会检查相关的单选按钮。使用 &lt;label&gt;@Html.RadioButtonFor(m =&gt; m.pledge.PaintColorId, item.ColorId, new { id = "" })&lt;span&gt;@item.ColorDesc&lt;/span&gt;&lt;/label&gt;(注意 new { id = "" } 删除 id 属性,所以你不生成无效 html 的重复项)
  • 标签的好主意。关于 ID,我实际上更改为: new { id = string.Format("RbColor_{0}", ColorId) } 因为我需要在选择单选按钮时放入一些 jQuery 逻辑。
  • 从你的subsequent question 我现在明白为什么你认为你需要一个id 属性,但你不需要(也不应该) - 请参阅我对另一个问题的回答中的脚本。

标签: asp.net-mvc razor


【解决方案1】:

请参阅 Stephen 的 cmets 以解决此问题。基本上将其设置为已检查,因为它检查了它所绑定的值。

最初创建视图模型时,我将字段值设置为默认值,并将单选按钮设置为选中。

foreach (var item in Model.PaintColor)
{
    var idVal = string.Format("PaintColor_{0}", item.ColorId);
    <div>
        <label>
            @Html.RadioButtonFor(m => m.pledge.PaintColorId,
                                item.ColorId,
                                new { id = string.Format("Rb{0}", idVal) }
                            )
            <span>@item.Description</span>
        </label>

【讨论】:

    猜你喜欢
    • 2012-02-22
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 2019-12-02
    • 1970-01-01
    相关资源
    最近更新 更多