【问题标题】:How can I stop refreshing the page in the else condition如何在 else 条件下停止刷新页面
【发布时间】:2012-10-05 05:37:54
【问题描述】:

我的代码:

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 条件下停止刷新页面。谢谢。

【问题讨论】:

  • 你说的是页面刷新还是回发?
  • 在管道的这个阶段阻止页面重新加载为时已晚:如果调用了您的服务器代码,则页面已经在刷新(正在回发)。但是,您可以显示相同的页面。如果你真的想阻止页面刷新,使用js客户端。
  • 您的意思是在单击按钮后不回发页面?
  • 为什么会刷新?您没有任何刷新代码!如果你不想刷新,那么你必须在客户端处理它。

标签: asp.net refresh


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    你不能。

    该代码运行时已请求新页面。如果您不进行回发,则该代码将永远不会运行。

    如果您想在不进行回发的情况下进行验证,则应改为使用客户端代码。

    【讨论】:

      【解决方案3】:

      您所展示的功能可以通过使用验证器轻松实现,因此页面不会回发。

      一旦它到达服务器,它真的不可能停止刷新。好吧,至少据我所知。 -温和的

      【讨论】:

        【解决方案4】:

        在页面加载后面的代码中放这个

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

        在你的 aspx 文件中有这个脚本

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

        【讨论】:

          【解决方案5】:

          您的页面已经转到服务器端,并且已经在回发中。

          您必须使用客户端代码来防止回发。

          【讨论】:

            【解决方案6】:

            如果只需要验证空文本框,为什么不使用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
                }
            }
            

            【讨论】:

              【解决方案7】:

              尝试使用RegisterScriptBlock

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

              如果您想从服务器端执行,请按上述方式执行。否则已经发布了许多答案。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2015-11-14
                • 1970-01-01
                • 2019-05-26
                • 2013-02-11
                • 1970-01-01
                • 1970-01-01
                • 2013-02-14
                • 1970-01-01
                相关资源
                最近更新 更多