我有一个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();
}
不是一个特别优雅的解决方案,但它确实有效。我仍然愿意接受建议。
答案 0 :(得分:1)
您必须在回发结束时的某个时刻重定向回当前页面,以防止重复提交表单。这称为Post/Redirect/Get模式。
答案 1 :(得分:0)
我不认为有更好的方法可以做到这一点,除了跟踪之前是否已刷新,并且只是在第二次刷新时不调用内容。