2010-04-22 186 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」,則複選框將始終處於未選中狀態。

也許這會有所幫助..