2010-11-02 39 views
13

默認爲在`Html.EditorFor`上覆蓋類

<%: Html.EditorFor(m => m.ConfirmationHeadline) %> 

輸出爲:

 <input type="text" value="" 
     name="ConfirmationHeadline" id="ConfirmationHeadline" 
     class="text-box single-line"> 

正如您所看到的,輸入附加了class屬性。好吧,這不應該是一個問題,只需使用

<%: Html.EditorFor(m => m.ConfirmationHeadline, new { @class="span-11 last"}) %> 

並且應該工作... 錯誤...不!

這將輸出完全相同的代碼!

雖然可以正常使用Html.TextAreaFor()

如何從中刪除類text-box single-line以便可以附加我自己的類?我應該編輯的任何T4模板?

感謝您的幫助。

回答

11

通過EditorFor方法使用內置編輯器模板時,無法自定義發出的類屬性的值。它硬編碼的類值(可以在這裏找到更多的信息:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html

你有兩個選擇:

  1. 編寫支持額外的功能自定義的模板。看看這裏的更多詳細信息:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html

  2. 進程EditorFor方法的輸出:

<%: new HtmlString(Html.EditorFor(m=>m.ConfirmationHeadline).ToString() 
     .Replace("class=\"text-box single-line\"", 
       "class=\"text-box single-line span-11 last\"")) %> 
+1

,我結束了使用'<%:Html.TextBox( 「ConfirmationHeadline」,空,新{@class =「span-11 last」})%>感謝您的鏈接。 – balexandre 2010-11-02 18:59:09

+0

這是否仍然在mvc4中工作? – Nikos 2012-12-15 19:51:13

2

asp.net的MVC創建了一個名爲的site.css在內容文件夾中的文件。在那裏你可以看到默認情況下文本框類被設置爲30em的寬度。將其重置爲像15em這樣的清晰度。單線類似乎沒有在任何地方定義。

+1

我總是拋棄site.css! – Nikos 2012-12-15 19:45:15

1

您可以使用TextBoxFor代替

+2

只是爲了確定,你知道'EditorFor'和'TextboxFor'的區別嗎?您可以[在此檢查](http://stackoverflow.com/questions/4826173)以獲得快速解答。 – balexandre 2013-01-23 22:49:26

0

我有這個同樣的問題,不喜歡任何解決方案上面。我也發現了一個類似的帖子here,但我也不喜歡這些解決方案。經過一些工具之後,我發現了一些我喜歡的東西,這讓我繼續使用編輯模板(這是您應該儘可能利用的東西)。我發佈瞭解決方案here

5

在MCV 5.1中,您可以利用htmlAttributes。工程就像一個魅力...

@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", placeholder = "Enter your Name" } }) 
-2

嘗試閱讀的布拉德的例子所有部件此代碼後

@Html.Raw(
    Html.EditorFor(m => m.DataInicial).ToString() 
    .Replace(
     "\"text-box single-line\"", 
     "\"form-control text-box single-line\"")) 
+4

你最好補充一些解釋。 – lpratlong 2014-06-05 12:56:21

+0

審查低質量的帖子:按照@Ipratlong的建議。由於審覈原因,目前形式的這個答案可能會被刪除。 – ElmoVanKielmo 2014-06-05 13:16:13