我正在使用MVC3,我想使我的視圖與jQueryUI主題完全集成。這意味着對於標準的@Html.EditorFor
字段,我希望他們的css類實現我選擇的jQueryUI主題,並且如果我切換主題,那麼我的標準MVC3輸入會相應地改變,即使沒有使用jQueryUI增強功能進行修飾?如何使MVC3編輯器模板匹配jQueryUI主題
默認情況下,當我打電話@Html.EditorFor(x => Model.FirstName)
,輸出如下:
<input class="text-box single-line" data-val="true" data-val-length="The First Name field must be between 3 and 50 characters in length" data-val-length-max="50" data-val-length-min="3" data-val-required="The FirstName field is required." id="FirstName" name="FirstName" type="text" value="John" />
這是非常乾淨的,因爲我所有的驗證屬性包括在內。但是,如果我嘗試調用@Html.EditorFor(x => Model.FirstName, new { @class = "ui-widget ui-state-default ui-widget-content" })
來應用jQueryUI樣式,則CSS類不會應用於輸入字段(它們保留「文本框單行」)。
我也覺得,如果我改變@Html.EditorFor()
到@Html.ListBoxFor()
,包括「新{@class =」 ...「}」我選擇的CSS類,它呈現與適當的jQueryUI的類,但我真的很喜歡的靈活性EditorFor用於任何類型的輸入。但是,即使只使用TextBoxFor,我也不喜歡每次都包含jQueryUI類。
要努力克服這一點,我試圖創建一個共享EditorTemplate從System.String
派生並在CSS類,它們的工作手動推杆,但後來我失去所有的驗證特性的自動功能,似乎「虛情假意」。似乎有必要有一種更簡單的方法來自動將自定義CSS全局應用於EditorFor helpers。
所以我的問題是:
- 我怎麼能告訴EditorFor使用自定義的CSS類?
- 如何覆蓋EditorFor(或至少TextBoxFor)全局應用CSS類,所以我不必再重複它們?
- 作爲獎勵,是否有任何引用在那裏,以用於什麼jQueryUI的類別(例如,當我應該申請UI狀態默認與UI的小部件內容),使我的所有標準MVC3輸入看起來像使用jQueryUI增強裝飾的輸入?
危險,謝謝,但正如我所說,我已經知道我可以像這樣使用TextBoxFor。我的問題是,如果可以實現並覆蓋EditorFor以獲得我正在查找的結果(包括css類)以及如何防止必須包含「new {@class =」ui-widget ui-state -default ui-widget-content「}」每次我調用這個方法時(即使我必須使用TextBoxFor)。 – bigmac 2012-01-04 18:34:22
@bmccleary - 不要試圖聽起來迂腐,你的問題的第一部分問你怎麼能告訴EditorFor(如在現有的EditorFor)使用自定義的CSS類,我的答案是,你不能。這是你的問題的第二部分,被問到關於壓倒性的EditorFor,我沒有回答。我現在已經更新了我的答案,以反映問題的所有三個部分。 – Dangerous 2012-01-04 20:51:18
@危險......謝謝。這爲我提供了我需要的方向。是的,你對細節的關注是值得讚賞的! ;) – bigmac 2012-01-04 22:16:54