设置HTML属性
我使用的HtmlHelper在我看来,以创建一个复选框,像这样:设置HTML属性
<%= Html.CheckBoxFor(model => model.SeatOnly, new { checked = "checked" })%>
然而,被抛出的错误作为检查是一个保留的关键字。我已经发现一对夫妇的人说你必须使用“保留字前缀”,简单地把一个uderscore在属性的前面,像这样:
<%= Html.CheckBoxFor(model => model.SeatOnly, new { _checked = "checked" })%>
这不会产生错误,但在生成html属性实际上是'_checked',这意味着它不起作用(如果我使用萤火虫并删除下划线属性然后生效)。
有没有人知道一个解决方法,而仍然使用CheckBoxFor
?
感谢
<%= Html.CheckBoxFor(model => model.SeatOnly, new { @checked = "checked" })%>
你需要用 '@' 前缀它:-)
更新
只是测试了以下和作品。试试这个...
型号
public class MyModel
{
public bool SomeBooleanValue { get; set; }
public string Title { get; set; }
}
查看(剪断,只在重要的位)
<%= Html.TextBoxFor(x => x.Title) %>
<%= Html.CheckBoxFor(x => x.SomeBooleanValue, new { @checked = "checked" }) %>
感谢您的快速回复,我试着用@作为前缀,但是这似乎并不奏效,在生成的html中根本没有'checked'属性! –
jcvandan
2010-04-22 09:13:02
随着我更新的答案,我得到以下Html输出...> – WestDiscGolf 2010-04-22 10:03:37
那就是与我试图做的完全一样,但由于某种原因,它总是从html中发出checked属性(但不包括其他属性,例如class)。我真的难倒了,所以我决定使用CheckBox而不是CheckBoxFor。 – jcvandan 2010-04-22 10:06:06
我找不到一种方法让HtmlHelper注册checked属性,所以我简单地使用Html.CheckBox("SeatOnly", true)
来代替。这样,我的视图模型中的属性仍在设置中,并且复选框被选中。
这很好,但我仍然有兴趣知道为什么@checked不能像@class一样工作。
我有同样的问题:在HTML代码中总是省略“checked”属性。我通过将“真”传递给模型来解决问题。片段看起来像这样:
MyModel model = new MyModel();
model.SomeBooleanValue = true;
当您将复选框与模型连接在一起时,复选框将始终显示模型的值。如果模型中的值为“false”,则复选框将始终处于未选中状态。
也许这会有所帮助..
+1同样适用于试图设置'class' html属性。 – AaronLS 2012-08-22 15:43:20