ファイルとしてダウンロードしたい場合ActionResult
は、@ Tunganoが提案するようにカスタムを試すことができます。そうでない場合は、応答に直接入れたい場合は、組み込みでContentResult
実行できますが、単純な文字列で機能し、複雑なシナリオではそれを拡張する必要があります。
public class CustomFileResult : FileContentResult
{
public string Content { get; private set; }
public string DownloadFileName { get; private set; }
public CustomFileResult(string content, string contentType, string downloadFileName)
: base(Encoding.ASCII.GetBytes(content), contentType)
{
Content = content;
DownloadFileName = downloadFileName;
}
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.AppendHeader("Content-Disposition", "attachment; filename=" + DownloadFileName);
base.ExecuteResult(context);
}
}
public class BlogController : Controller
{
public ActionResult Index()
{
return View();
}
public CustomFileResult GetMyFile()
{
return CustomFile("Hello", "text/plain", "myfile.txt");
}
protected internal CustomFileResult CustomFile(string content, string contentType, string downloadFileName)
{
return new CustomFileResult(content, contentType, downloadFileName);
}
}