2011-06-10 95 views
20

我試圖在ASP.NET MVC3中爲@Html.ValidationMessageFor()使用不同的消息。這工作正常,但似乎總是顯示消息,例如如果我這樣做:@ Html.ValidationMessageFor()自定義validationMessage始終顯示

@Html.ValidationMessageFor(model => model.TimesheetEntry.Product) 

然後錯誤只顯示當我提交表單,它是無效的。但是,如果我這樣做:

@Html.ValidationMessageFor(model => model.TimesheetEntry.Product, "custom error") 

然後,該消息顯示,只要我最初加載頁面。我可能在這裏做一些愚蠢的事情,任何幫助將不勝感激。

回答

32

您是否嘗試過使用CSS this question

.field-validation-valid 
{ 
    display: none; 
} 
.validation-summary-valid 
{ 
    display: none; 
} 
+0

是的,謝謝 - 現在完成並且它可以工作。這似乎有點破解雖然 – 2011-06-10 15:58:09

+2

@Tom Haigh我認爲這個CSS是一個新的MVC3 web應用程序開箱即用。我參考的答案表明CSS在開發過程中的某個時候被移除了。 – 2011-06-10 16:13:28

+0

爲什麼我必須手動添加這些類?我認爲MVC會自動添加它。無論如何,該解決方案完美無缺。 – 2016-06-28 09:09:49

1

我還沒有在MVC 3中使用足夠的驗證,所以我只是通過解決這個問題的方式來運行。

我想看看這個: http://msdn.microsoft.com/en-us/library/dd470929.aspx

呀,標準MSDN文檔,但ValidationMessageFor()方法規定:

返回的HTML標記爲每個數據字段驗證錯誤消息由指定的表達式使用指定的消息表示。

這聽起來對我來說就像它應該總是返回消息,即使你不提供自定義消息作爲字符串。看起來好像還有其他方法可以更好地滿足您對指定URI的需求。

+0

好的,謝謝這是有趣的模型參數。奇怪的是,雖然(但並不總是顯示消息),但不接收自定義消息的重載行爲卻有所不同(儘管該頁面上的描述類似) – 2011-06-10 16:00:06

8

可能你有你的HTTPGET的ActionResult方法