2011-05-11 4 views
0

自分でコントロールを検証したいと思います。だから私はボタンを押すとラベルと状態を入れます。私は検証の問題があります!

protected void sendButton1_Click(object sender, EventArgs e) 
{ 
    if (QuestionDetailsTextBox2.Text.Length > 5000) 
    { 
     QuestionDetailsTextBox2.Text = "You cant enter more than 5000 characters"; 
    } 
    else if(QuestionTextBox1.Text.Length > 100) 
    { 
     QuestionDetailsTextBox2.Text = "You cant enter more than 100 characters"; 
    } 
    else if (checkValidation()) 
    { 

     QuestionTextBox1.BorderColor = System.Drawing.Color.Red; 
    } 
    else 
    { 
     Response.Redirect("AnswerQuestion.aspx"); 
    } 
} 

正規表現バリデーターを追加しました。しかし、私はまた、これをしなかった:

再び
protected void topicDropDownMenu_SelectedIndexChanged1(object sender, EventArgs e) 
{ 
    SubTopicDropDownList.Items.Clear(); 

    string[] chosenItem = topic[topicDropDownMenu.SelectedItem.Value]; 

    foreach (string item in chosenItem) 
    { 
     SubTopicDropDownList.Items.Add(item); 
    } 

} 

、私はそれが私をリダイレクトなるようにボタンを2回押す必要があります:(...アヤックスが依然として必要である

答えて

2

をあなたが即時応答をしたい場合は、クライアントへのあなたの検証ロジックを移動する必要があります。これは通常、あなたがJavaScriptであなたの検証ロジックを記述し、クライアント側のクリックからそれを呼び出すこと偶数ポストバックイベントを処理する前に、テキストボックスのイベントを変更することができます。

コードビハインドでチェックを行うには、サーバーへの往復が必要です。このようにして全ページをポストバックするかajaxを使用して部分的なポストバックを行うかによって、データがサーバーに送られてクライアントが応答を待つ間に遅延が生じます。遅延の大きさは、転送する必要のあるデータ量とネットワーク条件によって異なります。このため、Ajaxは一般的に高速で、小さなバッチのデータを送信します。

ただし、クライアント側の検証を処理しますが、通常、コード内で検証ロジックを繰り返すことをお勧めします。これは、ユーザーがクライアントサイドスクリプトを無効にしているインスタンスを検出するためです。

+0

答えはajaxを使うことだと思います。 –

+0

@Dmitry - あなたの後ろにあるすべてがユーザー入力の長さを検証しているならば、正規表現バリデーターを試すことができます。あなたの正規表現のための "。{20,100}"の行に沿った何かが、あなたが後になっているように見えるものに近くなるはずです。 – Rozwel

+0

私は動作する正規表現が見つかりました。 validatersはajaxに基づいています..彼らは情報を返信しませんか?機能を使用したり、ページイベントを使用して達成した効果を達成できますか? –

1

あなたはPartial Page Updateを探している

?。

あなたはAJAXとUpdatePanelを使用することができます。

+0

私の唯一の希望ですか?質問が短すぎるかどうかを確認する別の方法はありますか? –

+0

カスタム検証はどうでしょうか? –

+0

@Dmitry Makovetskiyd:CustomValidatorを使用することをお勧めします。しかし、あなたが求めているのは、それがクライアント側の処理のように見えるようにすることです。あなたは部分的なポストバックが必要です。私は私の答えを編集しました。 –

関連する問題