0

asp.net ページに 3 つのフィルター テキストボックスがあります。各テキストボックスには、2 つの正規表現バリデータが割り当てられます。1 つは数値用、もう 1 つはアルファ用です。検証は正しく検出されますが、検索ボタンを押すと、検証ツールチップが表示されてもポストバックされます(フィルターが無効であることを示しています)。とにかく検証を「無視」してポストバックする理由はありますか?これが、3 つのコントロールとその検証に関する私の定義です。

<td>
                <asp:TextBox ID="txtAcctFilter" runat="server" BackColor="#FF6600" TabIndex="1">Enter Account No</asp:TextBox>
                <asp:RegularExpressionValidator ID="revAcctFilter" runat="server" Text="*" ControlToValidate="txtAcctFilter"
                    ToolTip="Enter Valid Account" ValidationExpression="^\d*$" ValidationGroup="Numeric"></asp:RegularExpressionValidator>
                <asp:RegularExpressionValidator ID="revAcctFilter2" runat="server" ControlToValidate="txtAcctFilter"
                    ValidationExpression="^Enter Account No$" ValidationGroup="Alpha"></asp:RegularExpressionValidator>
            </td>
            <td>
                <asp:TextBox ID="txtYearFilter" runat="server" BackColor="#FF6600" TabIndex="2"> Enter Year</asp:TextBox>
                <asp:RegularExpressionValidator ID="RevYearFilter" runat="server" Text="*" ControlToValidate="txtYearFilter"
                    ToolTip="Enter Valid Year" ValidationExpression="^20\d{2}$" ValidationGroup="Numeric"></asp:RegularExpressionValidator>
                <asp:RegularExpressionValidator ID="RevYearFilter2" runat="server" ControlToValidate="txtYearFilter"
                    ValidationExpression="^Enter Year$" ValidationGroup="Alpha"></asp:RegularExpressionValidator>
            </td>
            <td>
                <asp:TextBox ID="txtMonthFilter" runat="server" BackColor="#FF6600" TabIndex="3">Enter Month</asp:TextBox>
                <asp:RegularExpressionValidator ID="RevMonthFilter" runat="server" Text="*" ControlToValidate="txtMonthFilter"
                    ToolTip="Enter Valid Month" ValidationExpression="^(1[0-2]|0?[1-9])$" ValidationGroup="Numeric"></asp:RegularExpressionValidator>
                <asp:RegularExpressionValidator ID="RevMonthFilter2" runat="server" ControlToValidate="txtMonthFilter"
                    ValidationExpression="^Enter Month$" ValidationGroup="Alpha"></asp:RegularExpressionValidator>
            </td>
4

2 に答える 2

0

これはCausesValidation、検索ボタンでが設定されていない場合に発生する可能性があります。あなたはそれをチェックするかもしれません。

ちなみに、各テキストボックスのコンテンツを一致させたい2つの矛盾する正規表現がある場合、両方を同時に満たすことができないため(空の文字列を除く)、送信できない場合があります。

于 2012-11-15T22:07:16.617 に答える
0

ValidationExpression="^Enter Account No$|^\d+$" が正解です。| の両側に ^ $ タグを使用する必要がありました。両側を検証するようにします。これにより、1 つの式だけに戻ることができました。ポストバックを防ぐために、各コントロールの causevalidation も追加しました。これまでのところ、その作業:)

于 2012-11-16T15:05:22.040 に答える