2011-07-06 32 views
5

我在ASP.NET頁面中有幾個部分,需要單獨驗證它們。ValidationGroup指定時ValidationSummary不起作用

每個部分都有自己的驗證摘要部分,所以我想使用ValidationSummary標記和ValidationGroup屬性,但它不起作用。

下面的代碼工作,但驗證所有控件的頁面:

<asp:TextBox ID="field1" runat="server" TabIndex="1" MaxLength="20" /> 
<asp:RequiredFieldValidator ID="field1RequiredValidator" ControlToValidate="field1" runat="server" 
Display="None" ErrorMessage="mandatory 1" /> 

<asp:TextBox ID="field2" runat="server" TabIndex="2" MaxLength="20" /> 
<asp:RequiredFieldValidator ID="field2RequiredValidator" ControlToValidate="field2" runat="server" 
Display="None" ErrorMessage="mandatory 2" /> 

.... 

<asp:ValidationSummary ID="validationSummary" HeaderText="Sumary" runat="server" /> 

雖然以下不工作(沒有驗證任何上提交我只是去到下一個頁面嚮導):

<asp:TextBox ID="field1" runat="server" TabIndex="1" MaxLength="20" /> 
<asp:RequiredFieldValidator ID="field1RequiredValidator" ControlToValidate="field1" runat="server" 
Display="None" ErrorMessage="mandatory 1" ValidationGroup="xxxx" /> 

<asp:TextBox ID="field2" runat="server" TabIndex="2" MaxLength="20" /> 
<asp:RequiredFieldValidator ID="field2RequiredValidator" ControlToValidate="field2" runat="server" 
Display="None" ErrorMessage="mandatory 2" ValidationGroup="xxxx" /> 

.... 

<asp:ValidationSummary ID="validationSummary" HeaderText="Sumary" runat="server" ValidationGroup="xxxx" /> 

我在這裏錯過了什麼?是否需要額外的設置或其他?

回答

15

ASP.NET中的默認行爲是當用戶點擊一個沒有指定ValidationGroup按鈕(並具有CausesValidation設置爲true),不屬於驗證組的所有驗證控件進行驗證。

因此,要驗證特定的組,您需要設置應該導致驗證的按鈕的ValidationGroup屬性(也可能是CausesValidation屬性)。

有關詳細信息和示例,請參閱MSDN documentation for Button.ValidationGroup

編輯:如果您需要驗證頁面上的所有組,最簡單的方法當然是不使用驗證組。不過,若你想驗證只有一些(但不止一個)組,您可以通過調用做到這一點的服務器(在按鈕的點擊處理程序)上:

Validate("groupOne"); 
Validate("groupTwo"); 
// ... 

注意,這不會觸發客戶端端驗證。有關在單擊按鈕時觸發多個驗證組的討論,請參閱this post

編輯:我發現a blog post描述如何構建ASP.NET的可重複使用的「多個驗證組按鈕」,並附有代碼。沒有嘗試過,但它看起來很有希望。

+0

嘿......它的工作原理,不知道我不得不在按鈕上指定它。謝謝!但現在我有另一個問題。我的頁面中有更多驗證組。如何只用一個提交按鈕就可以觸發所有人? – user0971832

+0

如果您必須觸發一個按鈕的所有驗證,那麼您爲什麼要爲它們指定不同的驗證組。 – rahularyansharma

+1

@rahularyansharma:因爲我的網頁分成幾部分。每個部分都有自己的ValidationSummary(即錯誤摘要必須顯示在與出錯的字段相同的部分),因此我需要對它們進行分組。但我也需要全部通過一個提交按鈕來觸發。 – user0971832