8

テキストボックスを検証するために3つのバリデーターを使用していますが、テキストボックスに無効な値が入力されるとすべてがトリガーされます。しかし、ユーザーがこれらの障害を1つずつ解決できるように、これらのバリデーターを特定の順序で機能させたいと思います。

<asp:TextBox ID="txt_temp" runat="server"></asp:TextBox>                                                  

<asp:CompareValidator ID="cv_txt_temp" runat="server" CssClass="error" ControlToValidate="txt_temp" ValueToCompare="0" Type="Double" Operator="GreaterThanEqual" ValidationGroup="insert" SetFocusOnError="true" ErrorMessage="Must be valid value" Display="Dynamic"></asp:CompareValidator>

<asp:RegularExpressionValidator ID="rev_txt_temp" CssClass="error" SetFocusOnError="true"
 runat="server" ErrorMessage="Value upto 1 decimal place" Display="Dynamic" ControlToValidate="txt_temp" ValidationExpression="\d+(?:(?:\.|,)\d{0,1})?" ValidationGroup="insert"></asp:RegularExpressionValidator>


<asp:RangeValidator ID="rv_txt_temp" Display="Dynamic" runat="server" SetFocusOnError="true" ValidationGroup="insert" ControlToValidate="txt_temp" Type="Double" CssClass="error"></asp:RangeValidator> 
4

5 に答える 5

5

追加したバリデーターは、作成された順序でPage.Validatorsコレクションに自動的に追加されます。検証は、Page.Validatorsコレクションに存在する順序で実行されます。つまり、aspxファイルに示されている最初のバリデーター定義がPage.Validatorsの最初にあります。順序を変更したい場合、唯一の方法は、すべてのバリデーターを起動したい順序でページに入れることです

編集:あなたの場合、唯一の方法は、cssを使用してバリデーターをオーバーラップさせることです。

于 2013-01-25T06:16:20.410 に答える
0

RegularExpressionValidatorのみで試すことができます

<asp:RegularExpressionValidator ID="rev_txt_temp" CssClass="error" SetFocusOnError="true"   
 runat="server" ErrorMessage="Error.." Display="Dynamic" ControlToValidate="txt_temp"    
     ValidationExpression="^[1-9]\d*(\.\d{0,1})?$" ValidationGroup="insert"> 
</asp:RegularExpressionValidator>

他の方法でご希望の場合は、お知らせください。

于 2013-08-07T05:59:39.333 に答える
0

カスタムバリデーター、カスタムJavaスクリプト、またはマスク編集バリデーターを使用できます

于 2013-08-07T12:16:31.723 に答える
0

カスタム検証を作成できます。時間はかかりますが、検証の順序を制御できます。マスクされたテキストボックスエクステンダーを使用することもできます。

于 2013-08-07T12:17:14.213 に答える
0

「検証順序の設定」の解決策は次のとおりです。バリデーターがあるページで:1)aspxコードでAutoEventWireupをfalseに設定し、カスタムバリデーターを使用します。2)検証用の関数を作成して呼び出し、関連するバリデーター用に「IsValid」を設定します。

 validCustom1.IsValid = Validation1(textbox1.Text);
 if (Page.IsValid)
     validCustom2.IsValid = Validation2(textbox2.Text);
 if (Page.IsValid)
     validCustom3.IsValid = Validation3(textbox3.Text);
 if (Page.IsValid)
 { 
     //Do somethink
 }
 else
 {
     //Do somethink else
 }
于 2015-02-06T19:54:55.043 に答える