0

私は の aspx ページを持っていthree textbox controlsますdo validation。たとえば、3つすべてを残しtext boxes emptyて送信ボタンをクリックすると、最初show error messageに最初のテキストボックスが表示され、次に最初のテキストボックスに入力してもう一度保存をクリックすると、次のエラーメッセージが表示されます2 番目のテキスト ボックスなど。

つまり、送信ボタンをクリックした後、一度に 1 つのエラー メッセージのみを表示したいということです。あなたは人々が私に道を提案できますか?

4

4 に答える 4

0

<asp:CustomValidator>各テキストボックスのコントロールをお勧めします。カスタム検証ルーチンには、次のようなものを使用できます。

var textBox1IsValid = function textBox1IsValid(sender, args) {
    var tb = document.getElementById('TextBox1'),
        resultOfValidation = false;
    //do validation, modifying resultOfValidation as needed.
    arg.IsValid = resultOfValidation;
    return resultOfValidation;
},
textBox2IsValid = function textBox2IsValid(sender, args) {
    var tb = document.getElementById('TextBox2'),
        resultOfValidation = false;
    //do validation, modifying resultOfValidation as needed.
    //return either the validity of TextBox2
    //or (if TextBox1 is not valid) return true so the
    //validator for TextBox2 doesn't fire.
    arg.IsValid = resultOfValidation || !textBox1IsValid(sender, args);
    return resultOfValidation;
},
textBox3IsValid = function textBox3IsValid(sender, args) {
    var tb = document.getElementById('TextBox3'),
        resultOfValidation = false;
    //do validation, modifying resultOfValidation as needed.
    //return either the validity of TextBox3
    //or (if either TextBox1 or TextBox2 is not valid) return
    //true so the validator for TextBox3 doesn't fire.
    arg.IsValid = resultOfValidation || !textBox1IsValid(sender, args) || !textBox2IsValid(sender, args);
    return resultOfValidation;
};

このアプローチの利点はTextBox2TextBox3内容が有効な場合、または無効な場合に有効として返されるTextBox1ことです。これにより、すべてのフィールドが有効になるまで、一度に 1 つのバリデータのみが起動されます。また、カスタム検証ルーチンで以下をチェックできるため、もう少し柔軟です。

  • 必須フィールド
  • パターンマッチング
  • 値の比較

または必要なその他の検証がすべて 1 つの関数にまとめられています。

欠点は、サーバー側の検証ロジックも複製する必要があることです。

于 2013-07-03T11:33:32.997 に答える
0

AJAX コントロール ツールキットを使用できますか? VaidatorCallout コントロールはこのように動作し、エラーの場所を示す素敵な小さなバルーンが表示されます。

ASP.NET バリデータ コールアウト

于 2013-07-03T11:21:26.960 に答える
0

フォームの送信を確認し、エラーメッセージを含むリテラルに投稿することで、それを行うことができます。ポストバック検証は、JavaScript に頼るよりも優れています。

したがって、採用したいチェックのレベルに応じて、次のようなことができます。

protected void btnSubmit_Click(object sender, eventArgs e)
{
  if(String.IsNullOrEmpty(txtBox1.Text))
  {
    ltError.Text = "Sorry, error message for box1";
    return;
  }
}

明らかに、より多くのチェックで作業し、ステージ 1 を通過した後、ステージ 2 に進みます。ユーザー エクスペリエンスからは良くありませんが、うまくいくでしょう。

于 2013-07-03T11:15:34.920 に答える
0

このような関数値を返すことができます

public string CheckValidation()
{
    if (txtFirstName.Text.Trim().Equals(string.Empty))
       return "Please enter firstname";

    if (txtLastName.Text.Trim().Equals(string.Empty))
       return "Please enter lastname";
}

検証フィールドごとになど。

これがお役に立てば幸いです

于 2013-07-03T11:18:57.807 に答える