1

私のコード:

protected void btnOk_Click(object sender, EventArgs e)
{
     if (txtReportFavorite.Text != string.Empty)
     {
         //..
     }
     else
     {
         Response.Write("<script>alert('Enter Favorite name.')</script>");
         // I need to prevent page refresh here.
     }
 }

else状態でページの更新を停止するにはどうすればよいですか。ありがとう。

4

7 に答える 7

1

できません。

そのコードが実行されるとき、新しいページはすでに要求されています。ポストバックを行わないと、そのコードは実行されません。

ポストバックを実行せずに検証を実行する場合は、代わりにクライアント コードを使用して実行する必要があります。

于 2012-10-15T09:08:14.437 に答える
0

を使ってみてくださいRegisterScriptBlock

ClientScript.RegisterStartupScript(this.GetType),"","$(document).ready(function(){alert('Enter Favorite name.')});",true); 

サーバー側から実行したい場合は、上記のように実行してください。それ以外の場合は、すでに多くの回答が投稿されています。

于 2012-10-15T09:45:47.477 に答える
0

サーバー側に到達したという事実は、ページがサーバーに対して完全なサイクルを実行し、それ自体を更新したことを意味します。

このコードを Ajax 呼び出しで呼び出している場合を除きます。

これは、クライアントがフォームを送信するときに Ajax 呼び出しをシミュレートするボタンの周りに AjaxUpdatePanel を配置することによっても実現できます。

于 2012-10-15T09:08:06.070 に答える
0

表示している種類の機能は、バリデーターを使用して簡単に実現できるため、ページがポストバックされません。

サーバーに到達すると、更新を停止することは実際には不可能です。まあ、少なくとも私の知る限りでは。-マイルド

于 2012-10-15T09:09:58.737 に答える
0

ページ読み込み時のコードビハインドにこれを入れます

btnOk.Attributes.Add("onclick","return validate();");

あなたのaspxファイルにこのスクリプトがあります

function validate()
{
    if(document.getElementById("txtReportFavorite").value == "";
      {             
                alert("Enter Favorite name");
                return false;
      }

}
于 2012-10-15T09:10:33.667 に答える
0

あなたのページはすでにサーバー側に移動しており、すでにポストバックが進行中です。

ポストバックを防ぐためにクライアント側のコードを使用する必要があります。

于 2012-10-15T09:12:13.577 に答える
0

空のテキストボックスのみを検証する必要がある場合、RequiredFieldValidator を使用しないのはなぜですか? クライアント側でそれを行うことができます。

<asp:TextBox runat="server" id="txtReportFavorite" />
<asp:RequiredFieldValidator runat="server" id="txtReportFavorite" controltovalidate="txtName" errormessage="Enter Favorite name!" />
<br />
<asp:Button runat="server" id="btnSubmit" text="Ok" onclick="btn_Click" />

protected void btnSubmitForm_Click(object sender, EventArgs e)
{
    if(Page.IsValid) //for secure validation 
    {
        //do something
    }
}
于 2012-10-15T09:33:42.490 に答える