2009-10-14 73 views
53

考虑是否需要将控制器方法中的纯文本文件返回给调用者。这个想法是下载文件,而不是在浏览器中查看纯文本。ASP.NET MVC:返回纯文本文件从控制器方法下载

我有以下方法,它按预期工作。该文件将呈现给浏览器进行下载,并且该文件将填充字符串。

我想找一个'更正确'的方法实现,因为我对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(); 
} 

回答

112

使用的控制器类文件方法返回一个FileResult

public ActionResult ViewHL7(int id) 
{ 
    ... 

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

韩国社交协会tvanfosson。 你的回答帮了我很多。 – 2009-12-18 16:41:00

+0

如果SO可以拿起.net类,那么我们可以看到重载而不必谷歌:p – Jimmy 2014-09-18 08:11:36

5

你会想从你的方法返回一个FileContentResult