2010-01-19 2 views
1

Когда пользователь нажимает кнопку, я хочу построить строку, а затем загрузить эту строку в файл как файл (это файл CSV).Загрузите строку как файл

var response = HttpContext.Current.Response; 
    response.ClearContent(); 
    response.Clear(); 
    byte[] bytes = Encoding.ASCII.GetBytes(csvtext); 
    using (var stream = new MemoryStream(bytes)) 
    { 
     response.AddHeader("Content-Disposition", "attachment; filename=somefile.csv"); 
     response.AddHeader("Content-Length", stream.Length.ToString()); 
     response.ContentType = "text/plain"; 
     stream.WriteTo(response.OutputStream); 
    } 

Это то, что я до сих пор, и у меня есть чувство, что я нахожусь довольно близко, но я получаю следующее сообщение об ошибке:

Microsoft JScript ошибке выполнения: Sys.WebForms.PageRequestManagerParserErrorException: сообщение, полученное с сервера, не может быть проанализировано. Общими причинами этой ошибки являются изменение ответа на вызовы Response.Write(), фильтры ответов, HttpModules или трассировка сервера. Подробнее: Ошибка синтаксического анализа рядом с '[Первый бит файла CSV]'.

Я в затруднении, и крайний срок приближается. Любая помощь приветствуется.

ответ

2

Вы не можете сделать это с помощью частичной/асинхронной обратной передачи с помощью Ajax. Вам нужно будет сделать любую кнопку, с которой вы запускаете загрузку PostBackTrigger для своей UpdatePanel. Детали здесь: http://www.asp.net/Ajax/Documentation/Live/mref/T_System_Web_UI_PostBackTrigger.aspx

+0

Это сделало трюк, спасибо! –

4

Я предполагаю, что вы находитесь в панели обновления AJAX. Если вы делаете это действие, это должно быть сделано путем обратной передачи.

0

This может ответить на ваш вопрос. В частности, вы должны использовать «text/csv» в качестве типа контента.

0

Я бы дал сообщение кнопки обработчику .ashx (здесь tutorial) и поместил код, который вы написали в своем сообщении (возможно, с небольшими изменениями) в методе ProcessRequest в обработчик.

Редактировать: Также вас может заинтересовать this question.

Смежные вопросы