Response.End和handler.ashx

时间:2012-07-28 23:00:26

标签: c# asp.net csv handler

我有一个生成csv文件并提供下载的处理程序,这个处理程序在我的defoult.aasp上的codebehind中按钮调用,如下所示:

 Response.Redirect("~/Handler.ashx?startDate="+tbStartDate.Text.Trim()+"&endDate="+tbEndDate.Text+"&isCheck="+chkDuplication.Checked.ToString());

现在我上面的代码之后我还有另一行应该更新我的列表视图,但列表视图没有得到更新,有没有办法可以在csv下载后更新列表视图。

谢谢,

2 个答案:

答案 0 :(得分:1)

问题在于您的重定向。来自Microsoft documentation

  

任何响应正文内容,例如显示的HTML文本或   Response.Write文本在原始URL指示的页面中   忽略。

根据需要进行的处理,您有几个选项:

  1. 如果您不需要发回页面以打开文件,您可以使用ashx页面在javascript(window.open,目标为'_blank')中打开一个新窗口(包括查询字符串)作为URL。

  2. 如果您的网页需要回发,您可以在服务器端生成javascript,并在首次使用Page.ClientScript.RegisterStartupScript将网页重新加载到浏览器时执行该操作。

  3. 我们实际上根据具体要求使用这两种方法。一般来说,我们更喜欢第一种方法,即使它在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