Скачать строку в виде файла - PullRequest
1 голос
/ 19 января 2010

Когда пользователь нажимает кнопку, я хочу создать строку, а затем сделать так, чтобы пользователь загружал эту строку в виде файла (это файл 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]».

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

Ответы [ 4 ]

4 голосов
/ 19 января 2010

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

2 голосов
/ 19 января 2010

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

0 голосов
/ 19 января 2010

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

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

0 голосов
/ 19 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...