Подтвердить что ты не робот

ASP.NET MVC: возврат файла открытого текста для загрузки с контроллера

Рассмотрим необходимость возврата текстового файла из метода контроллера обратно вызывающему. Идея состоит в том, чтобы загрузить файл, а не рассматривать как открытый текст в браузере.

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

Я бы хотел найти "более правильную" реализацию этого метода, так как я не на 100% удобен с типом возврата void.

public void ViewHL7(int id)
{
    string someLongTextForDownload = "ABC123";

    Response.Clear(); 
    Response.ContentType = "text/plain";
    Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.hl7", id.ToString()));
    Response.Write(someLongTextForDownload);
    Response.End();
}
4b9b3361

Ответ 1

Использовать метод File в классе контроллера для возврата FileResult

public ActionResult ViewHL7( int id )
{
    ...

    return File( Encoding.UTF8.GetBytes( someLongTextForDownLoad ),
                 "text/plain",
                  string.Format( "{0}.hl7", id ) );
}

Ответ 2

Вы хотите вернуть FileContentResult из своего метода.