我有一个生成csv文件并提供下载的处理程序,这个处理程序在我的defoult.aasp上的codebehind中按钮调用,如下所示:
Response.Redirect("~/Handler.ashx?startDate="+tbStartDate.Text.Trim()+"&endDate="+tbEndDate.Text+"&isCheck="+chkDuplication.Checked.ToString());
现在我上面的代码之后我还有另一行应该更新我的列表视图,但列表视图没有得到更新,有没有办法可以在csv下载后更新列表视图。
谢谢,
答案 0 :(得分:1)
问题在于您的重定向。来自Microsoft documentation:
任何响应正文内容,例如显示的HTML文本或 Response.Write文本在原始URL指示的页面中 忽略。
根据需要进行的处理,您有几个选项:
如果您不需要发回页面以打开文件,您可以使用ashx页面在javascript(window.open,目标为'_blank')中打开一个新窗口(包括查询字符串)作为URL。
如果您的网页需要回发,您可以在服务器端生成javascript,并在首次使用Page.ClientScript.RegisterStartupScript将网页重新加载到浏览器时执行该操作。
我们实际上根据具体要求使用这两种方法。一般来说,我们更喜欢第一种方法,即使它在javascript中意味着更多的工作,但有时回发是无法避免的。
答案 1 :(得分:0)
尝试使用endResponse属性指示当前页面的执行是否应该终止,将其设为false,以便执行Response.End下面的行。
当您在HTTP处理程序中调用Response.Redirect方法并且想要在不终止请求的情况下重定向到另一个页面时,请将endResponse设置为false。 Soruce - http://msdn.microsoft.com/en-us/library/a8wa7sdt(v=vs.90).aspx
Response.Redirect("url",false);
// code to update your list view