2012-01-04 114 views
1

我試圖覆蓋爲驗證默認驗證CSS類,這是「現場驗證錯誤」類MVC 3覆蓋驗證消息的CSS

所以,如果我寫了一個輸入驗證消息我的窗體上如下:

@Html.ValidationMessageFor(m=>m.Name) 

然後MVC運行在默認情況下,如下設置類的消息跨度:

<span class="field-validation-error" data-valmsg-replace="true" data-valmsg-for="Name"> 

我的問題是,我怎麼能刪除的CSS類「現場valida重刑 - 錯誤「,並將其替換爲另一個類(我的版本),我將在我的應用程序的某些區域使用它。

回答

3

好的...所以我通過在根css文件中將基礎「field-validation-error」類設置爲「form.field-validation-error」來實現它......這意味着這個類

@Html.ValidationMessageFor(m=>m.Name, new { @class ="NewCssClass"}) 

,這將產生以下標記:

<span class="field-validation-error NewCssClass" data-valmsg-replace="true" data-valmsg-for="Name"> 

正如你可以看到下面所提到時生成的HTML,然後在我看來,我包括新的CSS類將具有最高優先級NewCssClass將覆蓋默認的驗證st YLE在「現場驗證錯誤」類中指定...

乾杯......

+2

我們錯過了第二個參數嗎?如果我錯了,請糾正我。 – Naresh 2013-10-25 13:10:13

0

編輯,你是對的,我沒有閱讀那麼遠的MVC源代碼 - 只要閱讀擴展方法源。變爲those fields are static readonly,無法更改。

所以,你不得不擁有兩個選擇:

  1. 處理使用集類名。
  2. 編寫您自己的擴展方法(或更簡單,從MVC源代碼中選擇just copy them並重命名它們)。
+0

感謝您的答覆,事情是HtmlHelper.ValidationInputCssClassName是一個只讀字段,不能從您的視圖設置? ?... – NiK 2012-01-04 21:49:41

+0

瞭解更多信息並修復了我的答案。雖然不太理想。 – Leniency 2012-01-04 22:22:37

+0

我喜歡選項C:不要使用MVC驗證! – Roger 2012-07-07 18:21:13