1

私は現在、フィールドのサーバー側の検証について疑問に思っています。

たとえば、空白にすることはできず、数値である必要があり、999999の値未満である必要があるフィールドがあります。

検証するコードの例は次のとおりです。

 If checkNumeric(txtBaseSalary.Text) = True Then
            txtBaseSalary.CssClass = "text"
        Else
            x += 1
            step_4 += 1
            txtBaseSalary.CssClass = "text error"
 End If

If val(txtBaseSalary.Text) = 0 or val(txtBaseSalary.Text) > 999999  Then
            x += 1
            step_4 += 1
            txtBaseSalary.CssClass = "error text"
        Else
            txtBaseSalary.CssClass = "text"
End If

ただし、最初の検証に失敗したが2番目の検証に合格した場合、エラー量(step_4)は増加しますが、2番目の検証に合格した場合、視覚的表現はクリアされます。

ネストされたifステートメントなしでフィールドに対して複数の検証を行う実装を持っている人はいますか?

また、複数の検証が必要なあらゆる状況に適用できるソリューションを提供してください。これは、私が投稿した1つの状況を検証する方法です。

4

3 に答える 3

3

次のいずれかを実行できます

  • CustomValidatorあなたの状態をチェックするwith ValidateEmptyText=trueand コードを使用するか、
  • RequiredFieldValidator空のテキストチェックするCompareValidatorと、指定された範囲の数値をチェックする を使用します。

<asp:CompareValidator runat="server" 
    id="cmpNumbers" 
    controltovalidate="txtBaseSalary" 
    valuetocompare="999999"
    operator="LessThan" 
    type="Integer" 
    errormessage="The number should be smaller than 999999!" /><br />

AjaxValidatorCalloutExtenderを使用して、エラー時に CSS を適用できます。別のオプションは、JQueryを使用することです。

于 2012-10-29T12:17:58.510 に答える
1

この式の単一の正規表現比較

^([0-9]{1,6})$

0 から 999999 の間の数値にすることを強制します。

あなたが書いた方法を使用することができます(「x」と「step_4」をインクリメントしたいようです)

using System.Text.RegularExpressions;
Regex r = new Regex("^([0-9]{1,6})$");
Match m = r.Match(text);
if (m.Success)...  

MSDN ドキュメント

または、すぐに使えるバリデーターを使用できます。

 <asp:RegularExpressionValidator 
   ID="regexpName" runat="server"     
   ErrorMessage="error text." 
   ControlToValidate="txtName"     
   ValidationExpression="^([0-9]{1,6})$" />

その他の MSDN ドキュメント

于 2012-10-29T12:58:02.997 に答える
1

数値テキスト ボックス コントロールを作成することをお勧めします。checkNumeric のチェックを回避します。

于 2012-10-29T12:13:54.860 に答える