【问题标题】:Conditionally include checked attribute in html.RadioButtonFor (MVC4/Razor)有条件地在 html.RadioButtonFor (MVC4/Razor) 中包含选中的属性
【发布时间】:2014-08-19 14:28:47
【问题描述】:

当您在手动编码的 html 元素(例如单选按钮)中显式包含选中的属性时,您可以使用布尔值来确定该属性是否会存在于该元素上 as seen here. 对于那些不想点击链接并给这个人一些当之无愧的流量的人:

@{ bool agree = true; } <input type="checkbox" name="agree" value="agree" checked="@agree" />

但是,假设我想将@Html.RadioButtonFor() 与an 对象一起使用。不会发生同样的情况。

@Html.RadioButtonFor(m =&gt; m.Property, "ValueOfTextBox", new { @id = "MyId", @class = "my-class", autocomplete = "off", @checked = someBoolValue }).

上面给出了checked="true"checked="false" 属性。

我们的领域模型、视图模型和许多其他东西之间的差异使我们无法使用一些更有趣的脚手架......并且可以说,如果你包含这么多的属性,你可能会更好 使用助手...但是有没有办法让助手具有与普通html相同的行为?

我在HtmlHelper 上创建了一个额外的扩展方法,包括一个控制属性存在的布尔值,但我很想知道是否有更直接/框架行为方式来解决这个特定问题.

【问题讨论】:

    标签: c# html asp.net-mvc-4 razor radio-button


    【解决方案1】:

    您确实不需要以这种方式设置checked 属性 - 助手会根据属性的值为您设置。例如,如果您的模型具有属性 Gender,并且您想要呈现“男性”和“女性”的单选按钮

    @Html.RadioButtonFor(m => m.Gender, "Male")<span>Male</span>
    @Html.RadioButtonFor(m => m.Gender, "Female")<span>Female</span>
    

    并且Gender 的值为“Female”,则在呈现页面时将选中第二个单选按钮。同样

    @Html.CheckboxFor(m => m.IsMale)
    

    如果IsMale = true 将复选框呈现为选中状态,如果IsMale = false 将呈现未选中状态

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多