2011-07-06 23 views
5

私はASP.NETページにいくつかのセクションがあり、それらを個別に検証する必要があります。ValidationGroupが指定されていると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を持っていないボタンをクリックする(とtrueCausesValidationセットを持っている)とき、検証グループに属していないすべての検証コントロールが検証されていることです。

したがって、特定のグループを検証するには、検証の対象となるボタンのValidationGroupプロパティを設定する必要があります(CausesValidationプロパティも可能です)。

詳細と例については、MSDN documentation for Button.ValidationGroupを参照してください。

EDIT:ページ上のすべてのグループを検証する必要がある場合、最も簡単な方法はもちろん検証グループを使用しないことです。これは、クライアントをトリガーしないこと

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

注:あなたはしかし、いくつかの(しかし複数の)グループのみを検証したい場合は、呼び出すことによって、(ボタンのクリックハンドラで)サーバ上でそれを行うことができます側の検証。 1回のボタンクリックで複数の検証グループを起動する方法については、this postを参照してください。

EDIT:ASP.NET用に再利用可能な「複数の検証グループボタン」をコードで完成させる方法を説明したa blog postが見つかりました。それを試していないが、それは有望に見えます。

+0

ちょっと...うまくいきましたが、わたしはボタンにもそれを指定しなければなりませんでした。ありがとう!しかし今、別の問題があります。私は私のページにさらに多くの検証グループを持っています。どのように私は1つの送信ボタンでそれらのすべてを起動するのですか? – user0971832

+0

ボタンごとに異なる検証グループを指定する理由は、1つのボタンからすべての検証をトリガーする必要がある場合です。 – rahularyansharma

+1

@rahularyansharma:私のページはセクションで分けられているので。各セクションには独自のValidationSummaryがあります(エラーサマリーはエラーのあるフィールドと同じセクションに表示される必要があります)ので、グループ化する必要があります。しかし、私はまた、1つの送信ボタンだけですべてを起動する必要があります。 – user0971832

関連する問題