如何从Web部件内部停止页面执行

时间:2011-03-22 16:51:34

标签: c# asp.net sharepoint

(我相信这适用于普通的ASP.NET Web部件和SharePoint托管的Web部件)

Web部件有一个“导出”按钮,可将输出呈现为csv,并设置相应的标题,使其在Excel中打开。

勾选按钮点击事件,清除回复,添加相应的标题和内容类型非常简单 - example

但是我注意到,如果此代码添加到Web部件和附加的调试器,那么如果页面上有此(或任何其他)Web部件的多个实例,那么HTTPApplication.CompleteRequest或Response.End都不会停止处理/页面生命周期,所有页面控件的所有事件仍然会触发。

在这个示例中这是浪费的,因为其他Web部件不需要运行 - 他们所做的任何事情都不会响应。

是否有任何方法可以阻止正在呈现的其他Web部件?

3 个答案:

答案 0 :(得分:1)

如何创建另一个为您执行实际导出功能的页面,然后让导出链接仅链接到另一个页面?

这可以解决必须手动结束请求的问题,因为您可以准确控制响应中输出的内容。

答案 1 :(得分:0)

简答:不。

由于您正在进行完整的回发,因此HTTP响应流必须包含服务器提供的整个HTML页面。

您可以通过某些参数使用ASP.NET输出缓存和刷新缓存,从而允许您的页面呈现其数据已更改的Web部件。

了解有关阅读本文档的ASP.NET缓存的更多信息:

答案 2 :(得分:0)

HttpContext.Current.Response.End();

仅用于兼容ASP。

ApplicationInstance.CompleteRequest();

应该做你想做的事。