(我相信这适用于普通的ASP.NET Web部件和SharePoint托管的Web部件)
Web部件有一个“导出”按钮,可将输出呈现为csv,并设置相应的标题,使其在Excel中打开。
勾选按钮点击事件,清除回复,添加相应的标题和内容类型非常简单 - example
但是我注意到,如果此代码添加到Web部件和附加的调试器,那么如果页面上有此(或任何其他)Web部件的多个实例,那么HTTPApplication.CompleteRequest或Response.End都不会停止处理/页面生命周期,所有页面控件的所有事件仍然会触发。
在这个示例中这是浪费的,因为其他Web部件不需要运行 - 他们所做的任何事情都不会响应。
是否有任何方法可以阻止正在呈现的其他Web部件?
答案 0 :(得分:1)
如何创建另一个为您执行实际导出功能的页面,然后让导出链接仅链接到另一个页面?
这可以解决必须手动结束请求的问题,因为您可以准确控制响应中输出的内容。
答案 1 :(得分:0)
简答:不。
由于您正在进行完整的回发,因此HTTP响应流必须包含服务器提供的整个HTML页面。
您可以通过某些参数使用ASP.NET输出缓存和刷新缓存,从而允许您的页面呈现其数据已更改的Web部件。
了解有关阅读本文档的ASP.NET缓存的更多信息:
答案 2 :(得分:0)
HttpContext.Current.Response.End();
仅用于兼容ASP。
ApplicationInstance.CompleteRequest();
应该做你想做的事。