Преобразование логики веб-форм asp.net в asp.net MVC

У меня был этот код в старом приложении веб-форм asp.net, чтобы взять MemoryStream и передать его как ответ, показывающий PDF в качестве ответа. Сейчас я работаю с приложением asp.net MVC и хочу сделать то же самое, но как мне показать MemoryStream как PDF с помощью MVC?

Вот мой код веб-форм asp.net:

    private void ShowPDF(MemoryStream ms)
    {
        try
        {
            //get byte array of pdf in memory
            byte[] fileArray = ms.ToArray();
            //send file to the user
            Page.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Page.Response.Buffer = true;
            Response.Clear();
            Response.ClearContent();
            Response.ClearHeaders();
            Response.Charset = string.Empty;
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-length", fileArray.Length.ToString());
            Response.AddHeader("Content-Disposition", "attachment;filename=TID.pdf;");
            Response.BinaryWrite(fileArray);
            Response.Flush();
            Response.Close();
        }
        catch
        {
           // and boom goes the dynamite...
        }
    }

person Gabe    schedule 17.05.2010    source источник


Ответы (1)


Вот сообщение в блоге именно об этом: http://biasecurities.com/blog/2008/binaryresult-for-asp-net-mvc/

ОБНОВЛЕНИЕ: в последнем комментарии к этому сообщению упоминается Response.TransmitFile, вы можете адаптировать код для его использования, если ваши PDF-файлы большие и у вас будет много одновременных загрузок.

person Dave Swersky    schedule 17.05.2010
comment
Спасибо, реализовал с помощью Response.TransmitFile и все заработало. +1 - person Gabe; 17.05.2010