2010-05-12 22 views
2

MVC.net 2默認情況下,輸出的驗證消息是這樣的:MVC.net 2 - 更改由ValidationMessageFor輸出的HTML - 可以通過模板下載嗎?

<span id="UserName_validationMessage" class="field-validation-valid">A Validation message</span> 

我想它不喜歡這樣寫道:

<label id="UserName_validationMessage" class="field-validation-valid">A Validation message</label> 

有沒有辦法做到這一點,如顯示和編輯模板?還是有另一種方法可以做到全球?

回答

3

生成該html的代碼位於System.Web.Mvc中的ValidateExtensions.cs的內部。您可以更新代碼以輸出標籤而不是跨度,然後重新編譯該標籤。代碼如下所示:

 TagBuilder builder = new TagBuilder("span"); 
     builder.MergeAttributes(htmlAttributes); 
     builder.MergeAttribute("class", HtmlHelper.ValidationMessageCssClassName); 
     builder.SetInnerText(String.IsNullOrEmpty(validationMessage) ? GetUserErrorMessageOrDefault(htmlHelper.ViewContext.HttpContext, modelError, modelState) : validationMessage); 

否則,您可能能夠覆蓋ValidationExtensions.ValidationSummary(此的HtmlHelper的HtmlHelper,字符串消息,IDictionary的htmlAttributes),並做到這樣......

+0

修改一個積極發展的dll添加自己的自定義代碼是一個糟糕的選擇,因爲它創造額外工作(並引入正常的行爲)如果DLL是不斷更新從官方消息。我仍然在尋找一種插入行爲並覆蓋它的全局方式,但是如果失敗了,我只需創建一個自定義的html幫助器並輸出自己的標記,方法是將System.Web.Mvc中的邏輯複製並自定義到我的自己的代碼庫。 – dshapiro 2016-07-26 18:54:22

0

我想這正是你要尋找的:

http://blog.syntaxc4.net/?p=711

+0

鏈接不回答問題。 – 2015-10-12 22:55:08

+0

不幸的是,應該出現在該頁面的要點不再被嵌入(可能是因爲嵌入要點的API更改)。這是一個很好的例子,爲什麼只有鏈接的答案是一個壞主意,內容應該被複制。閱讀文章,這聽起來像作家使用正則表達式來解決這個問題,所以我敢打賭,他創建了一個擴展,使用ValidationMessageFor的結果,它對html輸出運行了一個正則表達式,並用標籤替換了span ...其中,實際上,這不是OP要求的。 – dshapiro 2016-07-26 18:47:59

相關問題