andreilukas
Дата: 03.06.2008 21:26:15
Здравствуйте. Имеется компонент Custom Control в котором есть обработчик RaisePostBackEvent в котором имеется код для экспорта данных в Excel.
Код примерно такой:
System.Web.HttpResponse _myResponse = System.Web.HttpContext.Current.Response;
_myResponse.Clear();
_myResponse.ClearContent();
_myResponse.AddHeader("Content-Disposition", "attachment;filename=DataGridExport.xls");
_myResponse.ContentType = "application/vnd.ms-excel";
...
_myResponse.AddHeader("Content-Length", ByteLength.ToString());
_myResponse.AddHeader("Accept-Ranges", "bytes");
...
_myResponse.BinaryWrite(rawBytes);
...
_myResponse.Flush();
_myResponse.Close();
Из кода видно, что объект Response подвергается серьезным изменениям. Подскажите пожалуйста, не опасно так "влиять" на Response, если учесть что данный компонент является универсальным и его могут впихнуть куда угодно и как угодно? Не повредит ли он работе страницы в определенных (заранее неизвестных) условиях, например если человек посредством Response выводит какие-нибудь данные на странице? И если "да", то что делать в такой ситуации?
Большое спасибо.
Dimon aka Manowar
Дата: 03.06.2008 22:32:00
лучше ИМХО такое делать через отдельный хендлер/модуль. В Ajax контролах, например, это работать не будет
Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
Dimon aka Manowar
Дата: 05.06.2008 00:00:00
Да вообщем код тот же будет. Только не в самом контроле, а в отдельном ashx файле (для хендлера) например
Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.