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