18

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

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

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

4

7 回答 7

36

在 POST 之后搜索 GET - http://en.wikipedia.org/wiki/Post/Redirect/Get - 基本上,在您完成事件处理后重定向到当前页面。

就像是:

Response.Redirect(Request.RawUrl)

于 2009-02-16T13:20:14.923 回答
2

如果您认为不需要回发范例,则可能需要查看 ASP.NET MVC。

于 2009-02-16T13:06:01.573 回答
2

问题是当您按下按钮时,asp.net 按钮会执行表单发布。如果您用链接替换按钮,您的问题应该会消失。您还可以使用一个按钮来执行将 document.location 设置为页面地址的 javascript 函数。

于 2009-02-16T14:04:05.083 回答
1

如果我很好理解,您只需在填充网格之前检查您是否处于回发状态。
假设您在 上执行此Page_Load操作,只需将操作用回发测试包围,如下所示:

private void Page_Load(object sender, EventArgs e)
{
    if(!this.IsPostBack)
    {
        // populate grid
    }
}
于 2009-02-16T13:08:04.233 回答
1

您需要调用 response.Redirect(Request.Url.ToString());

或者您可以使用 updatepanel 包装网格,并在每个命令之后将数据源绑定到网格

于 2009-02-16T13:20:57.260 回答
1

在你的<asp:Repeater>标签里面放这个:

EnableViewState="false"

这将导致您的控件在每次页面加载时刷新,无论它是否是回发。

于 2009-04-02T19:08:01.557 回答
-1

例如:如果您单击“按钮”,系统将捕获事件“按钮单击”。如果刷新页面,系统将再次执行相同的事件。没有这个问题,在您的活动中插入:在您的活动中

private void button_click(object sender, System.EventArgs e)
{
    button.Enabled =false;
    button.Enabled =true;
}

你是什​​么意思?

于 2013-10-23T13:51:27.163 回答