我是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
函数内设置了一个断点,并在刷新页面时验证它确实在函数内部。我做错了什么?
答案 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.RedirectbtnSave_Click(object sender, EventArgs e)
{
//Code here to create an Item
Response.Redirect(@"~\page.aspx");
}