Response.Write and UpdatePanel

放肆的年华 提交于 2019-11-26 21:15:43

问题


I generate a vcard that I send to the client using the following code snippet:

Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", fileNameOnly));
Response.ContentType = "text/x-vcard";
Response.ContentEncoding = Encoding.GetEncoding("ISO-8859-1");
Response.Write(vCard.ToString());
Response.End();

However, I need to use vCards on a page that has the control inside and UpdatePanel. Unfortunately, according to Update panel and Response write this does not work and causes an error. I am wondering what are some alternative ways to send the contents of the vcard/file to the client's browser and have it display "open/save" dialog that don't involve Response.Write?


回答1:


You can't use Response.Write during an asynchronous postback. Whatever control executes that code needs to be added as a PostBackTrigger in the update panel:

<Triggers>        
    <asp:PostBackTrigger ControlID="Button1" />
</Triggers>

You can also do it in code-behind, if you prefer:

ScriptManager.GetCurrent().RegisterPostBackControl(Button1);



回答2:


Response.Write will not work under Asynchronous Events. My suggestion is to remove the Update Panel in case it is specifically being used for VCard point of view only.

Alternatively - Place a control inside the Update Panel and initialize it's value under asynchronous event. Now it will work.




回答3:


Why don't you consider the use of a separate handler/page to serve the vcard?

This is maybe the easiest and cleaner way to do that and it doesnt interfere any other (async or not) postback related to the updatepanel.




回答4:


I had a similar problem with Response.Write. I found a workaround or maybe even a solution to this problem. Capture the TextWriter given to the RenderBeginTag of a server control and write to that.

I blogged with an example here: http://timscyclingblog.wordpress.com/2013/03/07/asp-net-web-forms-response-write-in-an-updatepanel-dev-web/



来源:https://stackoverflow.com/questions/10014920/response-write-and-updatepanel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!