1

2つのテキストボックスがあるテーブルがあります。すべてのテキストボックスには、ユーザーがテキストボックスにデータを挿入できるようにするために必要なバリデーターがあります。

また、ユーザーの特権を確認するためのログインテーブルもあります。

ログインボタンを送信すると、最初のテーブルのバリデーターが表示され、ユーザーがログインできなくなります。ログインボタンのプロパティ(検証の原因)をfalseに変更しましたが、ログインテーブルに追加したバリデーターが表示されませんでした。 。

では、どうすればこの問題を解決できますか。

4

2 に答える 2

1

使用する必要があるのは、ボタンと検証の両方のValidationGroup属性です。これにより、特定のアクションで、ボタンがクリックされたときにページにバリデーターのサブセットのみを適用できます。

<asp:TextBox ID="txtA" runat="server" />
<asp:RequiredFieldValidator ID="rfvA" runat="server" ErrorMessage="Message." ControlToValidate="txtA" ValidationGroup="A" />
<asp:Button ID="btnA" runat="server" Text="A" ValidationGroup="A" />

<asp:TextBox ID="txtB" runat="server" />
<asp:RequiredFieldValidator ID="rfvB" runat="server" ErrorMessage="Message." ControlToValidate="txtA" ValidationGroup="B" />
<asp:Button ID="btnB" runat="server" Text="B" ValidationGroup="B" />

これで、btnAがクリックされると、rfvAが有効かどうかのみがチェックされ(txtAがチェックされます)、btnBがクリックされると、rfvBが有効かどうかのみがチェックされます。はい、同じ検証グループに複数の検証コントロールを含めることができます。

CausesValidationプロパティをfalseに設定すると、不要なアクションだけでなく、ボタンのすべての検証アクションが無効になります。

于 2010-10-18T15:15:15.793 に答える
1

ValidationGroupsを使用することで問題を解決できると思います。これはあなたのためのより長い説明のあるページからの抜粋です:

このページには、バリデーターの「Group1」と「Group2」の2つのグループがあります。その場合、ページには2つのボタンがあります。button1がクリックされると、バリデーターの最初のグループが起動します。button2がクリックされると、バリデーターの2番目のグループが起動します。検証が失敗した場合、ポストバックはデフォルトでクライアント側でブロックされます。

<html>
<body>
     <form runat=“server”&gt;
          <asp:textbox id=“TextBox1” runat=“server”/>
          <asp:requiredfieldvalidator ValidationGroup=“Group1”
                                                       ErrorText=“Need to Fill in Value!”
                                                       ControlToValidate=“TextBox1”
                                                       runat=“server”/>
            <asp:textbox id=“TextBox2” runat=“server”/>
            <asp:requiredfieldvalidator ValidationGroup=“Group2”
                                                         ErrorText=“Need to Fill in Value!”
                                                         ControlToValidate=“TextBox2”
                                                         runat=“server”/>
            <asp:button text=“Group1” ValidationGroup=“Group1” runat=“server”/>
            <asp:button text=“Group2” ValidationGroup=“Group2” runat=“server”/>
     </form>
</body>
</html>
于 2010-10-18T15:15:49.817 に答える