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();
}
2 53

2 ответа:

используйте метод File в классе controller для возврата FileResult

public ActionResult ViewHL7( int id )
{
    ...

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

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