C# 页面加载时调用的onclick函数
我是ASP/C编程新手: 我创建了一个C# 页面加载时调用的onclick函数,c#,asp.net,onclick,C#,Asp.net,Onclick,我是ASP/C编程新手: 我创建了一个asp:button,如下所示: <asp:button ID="CreateItem" ClientIDMode="Static" OnClick="btnSave_Click" runat="server" Text="SAVE"> </asp:button> 我注意到,当我点击我的按钮后刷新页面时,这个函数正在被调用。为了验证,我运行了调试器并在btnSave\u Click函数中设置了
asp:button
,如下所示:
<asp:button
ID="CreateItem"
ClientIDMode="Static"
OnClick="btnSave_Click"
runat="server"
Text="SAVE">
</asp:button>
我注意到,当我点击我的按钮后刷新页面时,这个函数正在被调用。为了验证,我运行了调试器并在
btnSave\u Click
函数中设置了一个断点,并在刷新页面时验证了它确实进入了函数中。我做错了什么?单击按钮后,页面刷新时会调用它,因为原始按钮的单击导致表单被发布。之后刷新页面时,浏览器只需重新发布表单数据,从而再次调用回调函数
为了避免这种情况,您只需在地址栏中输入url或突出显示url,然后按enter键,它将视为页面加载
编辑:未完全理解您的要求。为了避免在用户单击“刷新”时发生这种情况,您可以按照评论中提到的Oded进行操作,并在发布后重新定向:
从链接:
protected void SaveClicked(object sender, EventArgs e)
{
//save changes to database here
//Redirect if all went well
Response.Redirect("~/yourpage.aspx");
}
您必须使用以避免此问题。刷新页面时,上次请求(get或Post)再次提交到服务器
解决方案:在单击事件中使用响应。在代码之后重定向
btnSave_Click(object sender, EventArgs e)
{
//Code here to create an Item
Response.Redirect(@"~\page.aspx");
}
单击按钮后是否刷新?@Oded是。我正要把它编辑到我的帖子里,这就是为什么。浏览器正在尝试重新创建相同的请求,因此服务器将其理解为触发按钮单击的请求。您需要转到地址栏并按enter键才能发出新请求。这是在第一次加载页面时发生的,还是仅在按refresh时发生的?在浏览器上无法完成。处理这种情况的通常方法是(用户发布,服务器重定向(处理后)到浏览器随后获得的另一个页面)有没有办法防止这种情况发生?
btnSave_Click(object sender, EventArgs e)
{
//Code here to create an Item
Response.Redirect(@"~\page.aspx");
}