Скачать (Excel Export) с помощью Generic Handler без физической записи файла и без переменной сеанса возможно? - PullRequest
1 голос
/ 01 июля 2011

У меня есть GridView, и я хочу добавить его на страницу веб-приложения ASP.NET и хочу экспортировать данные в Excel.

Без UpdatePanels я отлично работал со следующим кодом:

        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.AddHeader(
            "content-disposition", string.Format("attachment; filename={0}", fileName));
        HttpContext.Current.Response.ContentType = "application/msexcel";

        using (StringWriter sw = new StringWriter())
        {
            using (HtmlTextWriter htw = new HtmlTextWriter(sw))
            {
                // The GridView stuff.
                // [...]

                //  render the htmlwriter into the response
                HttpContext.Current.Response.Write(sw.ToString());
                HttpContext.Current.Response.End();
            }
        }

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

Возможно ли как-то передать данные в универсальный обработчик без использования переменных сеанса или это единственный способ сделать это?

Я также не хочу физически записывать файл на жесткий диск, поскольку он используется пользователем только один раз.

Есть предложения?

1 Ответ

0 голосов
/ 01 июля 2011

Вы можете создать обработчик (ashx), который принимает строку запроса, в строке запроса вы можете указать имя файла загрузки. Если вы хотите обеспечить безопасность файлов (не все файлы доступны для всех пользователей), вам нужно проделать дополнительную работу в строке запроса или добавить в сеанс некоторую информацию о том, какие файлы доступны для загрузки.

...