页面加载时调用onclick函数

时间:2012-12-26 19:58:30

标签: c# asp.net onclick

我是ASP / C#编程的新手:

我创建的asp:button如下:

<asp:button
    ID="CreateItem"
    ClientIDMode="Static"
    OnClick="btnSave_Click"
    runat="server"
    Text="SAVE">
</asp:button>

在后面的代码中,我有以下内容:

btnSave_Click(object sender, EventArgs e)
{
    //Code here to create an Item    
}

我注意到当我点击我的按钮后刷新页面时,正在调用此函数。为了验证,我运行了调试器并在btnSave_Click函数内设置了一个断点,并在刷新页面时验证它确实在函数内部。我做错了什么?

2 个答案:

答案 0 :(得分:6)

单击按钮后会在页面刷新时调用它,因为原始按钮单击导致表单被发布。在此之后刷新页面时,浏览器只是重新发布表单数据,从而再次调用回调函数。

要避免这种情况,您只需输入网址或突出显示地址栏中的网址,然后按Enter即可将其视为网页加载。

编辑:没有完全理解你的要求。为避免在用户点击刷新时发生这种情况,您可以按照评论中提到的Oded进行操作,并在发布后重新定位:Post-Redirect-Get with ASP.NET

从链接:

protected void SaveClicked(object sender, EventArgs e)
{
    //save changes to database here

    //Redirect if all went well
    Response.Redirect("~/yourpage.aspx");
}

答案 1 :(得分:0)

您必须使用PRG patern来避免此问题。当您刷新页面时,您的上一个请求(获取或发布)将再次重新提交给服务器。

解决方案:在点击事件中,在代码

之后使用Response.Redirect
btnSave_Click(object sender, EventArgs e)
{
    //Code here to create an Item   
    Response.Redirect(@"~\page.aspx"); 
}