新的ActionResult,可以呈现生成的视图并通过电子邮件发送内容

时间:2009-01-23 02:14:11

标签: c# asp.net-mvc

我想知道是否有可能编写一个像这样的文件FileResult。

public ActionResult Generate(int id)
{
    //Fill Model
    string ViewName = "template1";    

    return new FileResult(ViewName, @"c:\save"+ id +".txt");
}

它将采用模型,并将其与视图结合,为您提供通常显示在屏幕上的输出,而只是使用指定的文件名保存它。

注意:此文件将保存在网络服务器

3 个答案:

答案 0 :(得分:0)

我认为不可能。您可以指定文件名和mime类型,但就是这样。想象一下您提出的建议所带来的安全漏洞。

答案 1 :(得分:0)

是的,这是可能的,但你不使用FileResult。 If you set the content type and disposition headers to something unknown,浏览器会提示用户保存结果。

答案 2 :(得分:0)

如前所述,出于安全原因,您不能这样做,但如果提示用户保存文件,则可以保存文件。我已经为我的简历做了这件事。我的简历有一个单词版本 从xml生成。所以我有一个像这样的WordResult:

public class WordResult : ActionResult
{
public string FileName { get { return "Resume.doc"; } }

public override void ExecuteResult(ControllerContext context)
{
  GenerateMsWordDoc(context);
}

public void GenerateMsWordDoc(ControllerContext context)
{
  // You can add whatever you want to add as the HTML and it will be generated as Ms Word docs
  context.HttpContext.Response.AppendHeader("Content-Type", "application/msword");
  context.HttpContext.Response.AppendHeader("Content-disposition", "attachment; filename=" + FileName);

}

}

要查看此操作:http://www.aspevia.com/resume/show是标准网络版 http://www.aspevia.com/resume/show?format=word是单词version