2013-04-17 94 views
6

在剃刀,如果我有這樣的事情:Addind CSS類剃刀元素

@Html.EditorFor(model => model.name)甚至:@Html.CheckBoxFor(m => m.RememberMe)

如何將添加CSS類或ID給他們?我一直在閱讀關於幫手的內容,但是我需要爲每一個元素做一個幫手嗎?有沒有簡單的方法來添加一個類或ID剃鬚刀的形式元素?

回答

7

你不能做到這一點與EditorFor幫手,只是因爲你不知道什麼模板將被使用。你可以實現它,但你需要編寫一個自定義編輯器模板。例如,這可以通過覆蓋default editor template並考慮表示附加視圖數據的第二參數來實現。

這裏有這樣一個自定義編輯模板,如何能尋找字符串類型(~/Views/Shared/EditorTemplates/string.cshtml)的例子:

@Html.TextBox(
    "", 
    ViewData.TemplateInfo.FormattedModelValue, 
    ViewData 
) 

,然後你可以使用它像:

@Html.EditorFor(model => model.name, new { @class = "myclass" }) 

隨着CheckBoxFor幫手你可以這樣做:

@Html.CheckBoxFor(m => m.RememberMe, new { @class = "myclass" }) 
+0

啊,我該退休了嗎?你現在都在這個地方:)直到我發佈我的東西纔看到你的答案。 –

+0

@vonv。,然而,即使發佈2分鐘後,它也是你的投票:-) –

+0

有了這篇博客文章,因爲它指出了MVC2的MVC3工作? – TheWebs

0

因爲EditorFor不是特定於類型的,所以不能在這些類型上使用它。

CheckBoxFor,你可以使用:

@Html.CheckBoxFor(m => m.RememberMe, new { @class = "myClass", id = "myID" }) 

注意@class之前,因爲這是在C#中保留關鍵字

+0

這不適用於EditorFor。它的第二個論點並不符合大多數人的看法。 –

+0

@DarinDimitrov好的留言,更新。 – mattytommo

3

CheckboxFor很容易,你c一個是這樣的:

@Html.CheckBoxFor(m => m.RememberMe, new { @class="your_class", @id="the_id" }) 

EditorFor有點棘手,因爲它不支持開箱即用。我的意思是你可以爲每種類型創建一個模板,然後做一個TextBoxFor添加html屬性(與CheckBoxFor相同的語法)。您可能需要爲您想要支持的每種類型執行此操作。