如何删除按钮单击事件?

时间:2016-10-04 05:43:18

标签: javascript c# asp.net

在我的项目中,有一个带有C#button_Onclick处理程序的asp按钮。问题是当你点击html上的按钮时,事件将由浏览器保存。例如,如果刷新浏览器,将发送事件..

我尝试在button_Onclick处理程序的末尾添加一个return;,并为要调用的按钮_Onclick处理程序添加一个JavaScript,但都失败了。

ASP:

<asp:Button ID="btnSubmit" runat="server" Text="Save" />

C#:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    .......
    return;
}

2 个答案:

答案 0 :(得分:0)

假设您的代码在单击按钮时发出POST请求,这就是浏览器的行为方式,并且应该在刷新时执行操作。他们必须将提交的数据再次发送到服务器。如果你想避免这种情况,那么在你的提交处理程序方法中,你应该在执行你的处理程序之后重定向到另一个URL。

例如,如果form.asp显示您的表单,那么在您的处理程序中,您可以重定向到form.asp?message=thankyou(注意不同的网址),然后在刷新的情况下,您的表单将不会再由浏览器到服务器。

另外,最好使用303重定向。

答案 1 :(得分:0)

您应该重定向到另一个页面以避免这种情况。但是如果您希望保持解决方法如下。

在pageload_Event中捕获dateTime。

 protected void Page_Load(object sender, EventArgs e)
 {
   if (!IsPostBack)
     {
       Session["update"]=Server.UrlEncode(System.DateTime.Now.ToString());
     }
 }

在Page_PreRender事件中将sessionVariable复制到ViewState变量。您可以参考以下内容以清楚地了解页面生命周期。 &#34; http://www.codeproject.com/Articles/667308/ASP-NET-Page-Life-Cycle-Events&#34;

  public void Page_PreRender(object obj, EventArgs e)
  {
      ViewState["update"] = Session["update"];
  }

现在,在click事件的按钮上比较ViewState和session变量。如果两个值相等,则允许进入块。

protected void btnSubmit_Click(object sender, EventArgs e)
{
     if (Session["update"].ToString() == ViewState["update"].ToString())
      {
         try
         {
          -----------Your Logic
         }
         finally
         {
          Session["update"]=Server.UrlEncode(System.DateTime.Now.ToString());
         }
      }
}