2013-02-05 57 views
1

我有一個視圖(跳過冗餘代碼爲簡單起見):如何僅使用Html.ValidationSummary顯示一條錯誤消息?

@model CompetencyModel 
@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary() 
    @Html.EditorFor(model => model.Results) 
} 

當我提交,如果驗證內部EditorFor失敗,的ValidationSummary 示出了用於每個項目從EditorFor未來所有驗證消息列表。

這個截圖是一個視圖,其中EditorFor是單選按鈕一行:

enter image description here

但我需要一個單個錯誤消息隨便說什麼失敗。我試過了:

@Html.ValidationSummary(true) 
@Html.EditorFor(model => model.Results) 

但它沒有顯示任何東西。我試過

@Html.ValidationSummary(true) 
@Html.EditorFor(model => model.Results) 
@Html.ValidationMessageFor(model => model.Results, "ERROR !!!") 

但它沒有顯示任何東西。

我在做什麼錯?謝謝。

解決方案 這將做到這一點。

<style>.validation-summary-errors ul { display: none; }</style> 
@Html.ValidationSummary("Can't save, you must answer all questions !!") 
+0

@ Html.ValidationSummary(true)應該有效。有沒有機會,你的形式是循環的? –

+0

沒有。如果它顯示驗證消息列表,它應該顯示EditorFor的一般錯誤消息,如果我通過(true),但它不會。 – monstro

回答

3

ValidationExtensions.ValidationSummary method將始終返回一個無序的項目列表。

另一個人問這個問題,並選擇使用jQuery來隱藏物品: https://stackoverflow.com/a/10837702/1220302

你可以做的另一種解決方案是隻有在使用CSS的nth-child僞標籤列表中顯示的第一個項目。當然,這取決於你的瀏覽器版本正在使用,但:

我覺得是這樣的:

.validation-summary-errors ul li:nth-child(-n+1) { 
    display:none; 
} 
+0

我站好了。如你所說,總結返回ul或者什麼都不是。 –

+0

但是怎麼樣:ValidationSummary(HtmlHelper助手,布爾excludePropertyErrors,String消息)? excludePropertyErrors:僅用於顯示摘要顯示模型級別的錯誤;如果爲摘要顯示所有錯誤,則爲false。 消息:與驗證摘要一起顯示的消息。 – monstro

+0

哦,看來這條消息只顯示第一個參數爲false時,如UL標準列表中的標籤。 – monstro

1

我認爲你可以使用以下規則來隱藏除第一個所有消息:

.validation-summary-errors ul li:nth-child(n+2) { 
    display:none; 
}