2010-04-22 182 views
11

我使用的HtmlHelper在我看来,以创建一个复选框,像这样:设置HTML属性

<%= Html.CheckBoxFor(model => model.SeatOnly, new { checked = "checked" })%>

然而,被抛出的错误作为检查是一个保留的关键字。我已经发现一对夫妇的人说你必须使用“保留字前缀”,简单地把一个uderscore在属性的前面,像这样:

<%= Html.CheckBoxFor(model => model.SeatOnly, new { _checked = "checked" })%>

这不会产生错误,但在生成html属性实际上是'_checked',这意味着它不起作用(如果我使用萤火虫并删除下划线属性然后生效)。

有没有人知道一个解决方法,而仍然使用CheckBoxFor

感谢

+0

+1同样适用于试图设置'class' html属性。 – AaronLS 2012-08-22 15:43:20

回答

19
<%= 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" }) %> 
+1

感谢您的快速回复,我试着用@作为前缀,但是这似乎并不奏效,在生成的html中根本没有'checked'属性! jcvandan 2010-04-22 09:13:02

+0

随着我更新的答案,我得到以下Html输出...> WestDiscGolf 2010-04-22 10:03:37

+0

那就是与我试图做的完全一样,但由于某种原因,它总是从html中发出checked属性(但不包括其他属性,例如class)。我真的难倒了,所以我决定使用CheckBox而不是CheckBoxFor。 – jcvandan 2010-04-22 10:06:06

0

使用@checked

而且具有属性class发生(保留字),他们使用@class

+0

与@class一起工作,但是当试图使用@checked时,它根本不会向html标记添加任何内容! – jcvandan 2010-04-22 09:29:09

+0

你试过了吗? ('c'大写) – 2010-04-22 09:34:28

+0

是的,同样的问题也和@checked一样。这当然是一个奇怪的... – jcvandan 2010-04-22 09:41:24

0

我找不到一种方法让HtmlHelper注册checked属性,所以我简单地使用Html.CheckBox("SeatOnly", true)来代替。这样,我的视图模型中的属性仍在设置中,并且复选框被选中。

这很好,但我仍然有兴趣知道为什么@checked不能像@class一样工作。

4

我有同样的问题:在HTML代码中总是省略“checked”属性。我通过将“真”传递给模型来解决问题。片段看起来像这样:

MyModel model = new MyModel(); 
model.SomeBooleanValue = true; 

当您将复选框与模型连接在一起时,复选框将始终显示模型的值。如果模型中的值为“false”,则复选框将始终处于未选中状态。

也许这会有所帮助..