我的asp.net网格中添加了命令按钮。使用该按钮执行操作后,我们刷新网格以反映新数据。 (基本上这个动作会重复网格行。)
现在,当用户使用 F5 刷新页面时,会显示一条警告消息(要将信息重新发送到服务器),如果我们选择“重试”,则会自动重复该操作。
我知道这是asp.net中的一个常见问题,我们怎样才能最好地解决这个问题?
答案 0 :(得分:32)
在POST后搜索GET - http://en.wikipedia.org/wiki/Post/Redirect/Get - 基本上,在您处理完活动后重定向到当前页面。
类似的东西:
Response.Redirect(Request.RawUrl)
答案 1 :(得分:2)
如果您认为不需要回发范例,则可能需要查看ASP.NET MVC。
答案 2 :(得分:2)
问题是当你按下按钮时,asp.net按钮会执行表单帖子。如果您用链接替换按钮,您的问题应该消失。您还可以使用执行javascript函数的按钮将document.location设置为页面地址。
答案 3 :(得分:1)
如果我很清楚,你只需要在填充你的网格之前检查你是否处于回发状态
假设你在Page_Load
上执行此操作,只需使用回复测试来围绕操作,如下所示:
private void Page_Load(object sender, EventArgs e)
{
if(!this.IsPostBack)
{
// populate grid
}
}
答案 4 :(得分:1)
你需要调用response.Redirect(Request.Url.ToString());
或者您可以使用updatepanel包装网格,并在每个命令将数据源绑定到网格
之后答案 5 :(得分:1)
在<asp:Repeater>
标记内放置:
EnableViewState="false"
这会导致您的控件在每次加载页面时都会刷新,无论是否为回发。
答案 6 :(得分:-1)
例如: 如果你点击'按钮'系统将捕捉事件'button_click'。 如果刷新页面,系统将再次重新执行同一事件。 没有这个问题,在你的事件中插入: 关于你的活动
private void button_click(object sender, System.EventArgs e)
{
button.Enabled =false;
button.Enabled =true;
}
是你的意思吗?