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

您到达服务器端的事实意味着您的页面已经完成了一个完整的服务器循环并自行刷新。

除非您使用 Ajax 调用来调用此代码。

您还可以通过在您的按钮周围放置一个 AjaxUpdatePanel 来实现这一点,该按钮将在您的客户提交您的表单时模拟 Ajax 调用。

于 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 回答
0

尝试使用RegisterScriptBlock.

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

如果您想从服务器端执行,请像上面那样执行。否则已经发布了许多答案。

于 2012-10-15T09:45:47.477 回答