2012-04-16 19 views
0

WinFormからWinAppへのコードを変換しようとしていますが、aspxはほとんどなく、javascriptもほとんど認識していません。C#TextBox。ASPXのCancelイベントをキャンセルする

テキストを入力するテキストボックスをプログラムによって作成しました。テキストは、そのようにのような検証方法を通過さ:

text.Validating += new CancelEventHandler(boolean_Validating);

text.Validating一部の定義を持っていない

private void boolean_Validating(object sender, CancelEventArgs e) 
    { 
     TextBox textBox = (TextBox)sender; 
     string boolean = textBox.Text; 

     string message = null; 
     if (!checkBooleanSyntax(boolean, out message)) 
     { 
      Response.Write("Error: " + message); 
      e.Cancel = true; 

      textBox.Text = message; 
     } 
    } 

ASPXに行きます。キャンセルイベントハンドラを使用してテキストを検証するにはどうすればよいですか?

答えて

0

asp.netでは、検証コントロールを使用しています。それらはクライアント側(ユーザーがブラウザでJavaScriptを無効にしていない場合)とサーバー側でジョブを処理できます(したがって、ユーザーはjsを無効にするだけでなく、アプリケーションをすぐに自由に利用できます) 。

特定のロジックで特別な検証が必要な場合は、カスタムのバリデータコントロールを自分で記述することができます。

このトピックは本の中で、複数のチャプターで覆うことができるので、ここではすべてのものを書きますが、詳細については、こちらを見ることができない: http://www.w3schools.com/aspnet/aspnet_refvalidationcontrols.asp

http://msdn.microsoft.com/en-us/library/aa479013.aspx

+0

ありがとう、walther。私は見てみましょう。 – user1015106

+0

さて、私は 'booleanCustomValid_ServerValidate'イベントを作成した後、ボタンを' booleanCustomValid.Validate();と設定しました。 – user1015106

+0

いいえ、間違いなく動作しません。 – user1015106

0

それはあなたがあることに獲物を落下しているようです長い間ステートフルアプリケーションに使用されていました。 Webサーバーは要求をキャンセルしません。単に、あなたに与えられた情報を受け取り、応答を送信するだけです。

したがって、テキストボックスのテキストを検証する場合は、通常、サーバーに送信するボタンがあり、そのボタンのクリックコードが値を受け取り、それを検証します。無効な場合、ページの一部をHTMLでマークアップするか、いくつかのコントロールを表示し、その情報をユーザーのブラウザに戻します。

例:その後、あなたのコードで

<asp:TextBox ID="textName" runat="server" CssClass="someTextYo" /> 
<asp:Panel ID="panelError" runat="server" Visible="false"> 
    You entered bad stuff, yo 
</asp:Panel> 
<asp:Button ID="buttonSubmit" runat="server" Click="buttonSubmit_Click" /> 

protected void buttonSubmit_Click(object sender, EventArgs e) 
{ 
    if(string.IsNullOrEmpty(textName.Text)) 
    { 
     panelError.Visible = true; 
    } 
    else 
    { 
     // Save to Database, whatever 
    } 
} 

また、あなたはJavaScriptを使用してクライアント側でこれらのコンポーネントを検証することができ、ひいてはへの往復の必要性を取り除きますサーバー(ただし、データサーバー側も検証する必要があります)。例えば、jQueryを使って:

$('form').submit(function() 
{ 
    if($.trim($('.someTextYo').val()) == '') 
     return false; 

    return true; 
}); 

フォームがfalseを返すコールバックを提出証明することによって、フォームのポストをキャンセルすることができます。

+0

ありがとう、Tejsですが、ユーザーはテキストに情報を送信していません。前のページのコードは、それが収集しているテキストを送信しています。テキストボックスの検証は、ユーザーが次のページに移動したときに自動的に行われることになっています。 – user1015106

+0

ええと...あなたがどういう意味か分かりません。 – user1015106

関連する問題