有条件地在html.RadioButtonFor(MVC4 / Razor)中包含checked属性

时间:2014-08-19 14:28:48

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

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

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

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

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

以上内容提供了checked="true"checked="false"属性。

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

我在HtmlHelper上创建了一个额外的扩展方法,以包含一个控制属性存在的bool值,但是我想知道是否有一种更直接的/框架行为方式解决这个特殊问题。

1 个答案:

答案 0 :(得分:3)

您实际上不需要以这种方式设置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

,则会取消选中该复选框