在asp.net中进行回发操作后刷新页面

时间:2009-02-16 13:01:59

标签: asp.net postback refresh

我的asp.net网格中添加了命令按钮。使用该按钮执行操作后,我们刷新网格以反映新数据。 (基本上这个动作会重复网格行。)

现在,当用户使用 F5 刷新页面时,会显示一条警告消息(要将信息重新发送到服务器),如果我们选择“重试”,则会自动重复该操作。

我知道这是asp.net中的一个常见问题,我们怎样才能最好地解决这个问题?

7 个答案:

答案 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;
}

是你的意思吗?