防止在浏览器刷新时打开应用程序

时间:2010-12-19 04:21:21

标签: c# asp.net excel interop

我有一个ASP.NET / C#应用程序,只需点击一下Button控件,就可以使用COM interop将一些数据导出到Excel电子表格中。单击该按钮时,将使用生成的电子表格打开Excel。对于它的价值,这里是按钮代码:

<asp:Button ID="export" Text="Export to spreadsheet" runat="server" OnClick="Export_Workbook" />

除非单击按钮,关闭后续电子表格并刷新页面,否则此工作正常。单击按钮后刷新页面时,再次调用Export_Workbook(),然后再次打开电子表格。例如,当您刷新时,Firefox会说:“要显示此页面,Firefox必须发送重复之前执行的任何操作(例如搜索或订单确认)的信息。”这是我想避免的。

我确信有更好的方法来完成我想要做的事情,我只是不确定最好的方法是什么。

修改

我通过以下方式完成了这项工作:

protected void Export_Workbook(object sender, EventArgs e)
{
    Response.Redirect(Request.Url.AbsolutePath, false);
    ItemList.Prepare_Workbook();
}

不是一个特别优雅的解决方案,但它确实有效。我仍然愿意接受建议。

2 个答案:

答案 0 :(得分:1)

您必须在回发结束时的某个时刻重定向回当前页面,以防止重复提交表单。这称为Post/Redirect/Get模式。

答案 1 :(得分:0)

我不认为有更好的方法可以做到这一点,除了跟踪之前是否已刷新,并且只是在第二次刷新时不调用内容。