如何将动作结果保存到文件中?

| 如何将操作结果保存到asp.net MVC中的磁盘上的文件中?
public void Test()
{
  var x = view();
  //save x as a file on disk
}
    
已邀请:
此方法(作为方法添加到您的控制器类型)将找到并触发View并以字符串形式返回View Result。 然后,您可以使用字符串并执行所需的操作。 我将其用于电子邮件模板。
protected string ViewContent(string view, 
  string controller, ViewDataDictionary viewData)
{
  var routeData = new System.Web.Routing.RouteData(
    RouteData.Route, RouteData.RouteHandler);
  foreach (var item in RouteData.Values)
  {
    routeData.Values.Add(item.Key, item.Value);
  }
  //then overwrite the controller - not the action, though
  routeData.Values[\"controller\"] = controller;

  var controllerContext = new ControllerContext(
    HttpContext, 
    routeData, 
    this);

  ViewEngineResult result = ViewEngines.Engines.FindView(
    controllerContext, 
    view, 
    null);

  string content = null;
  if (result.View != null)
  {
    using (StringWriter output = new StringWriter())
    {
      ViewContext viewContext = new ViewContext(
        controllerContext, result.View, viewData, TempData, output);

      viewContext.View.Render(viewContext, output);
      result.ViewEngine.ReleaseView(ControllerContext, viewContext.View);
      content = output.ToString();
    }
    return content;
  }
  else
    throw new InvalidOperationException(\"Can\'t find view\");
}
然后,我将这些重载添加到其他mvc方法中:
protected string ViewContent(string view)
{
  return ViewContent(view, (string)null);
}

protected string ViewContent(string view, string controller)
{
  return ViewContent(view, controller, (object)null);
}

protected string ViewContent(string view, object model)
{
  return ViewContent(view, (string)null, model);
}

protected string ViewContent(string view, 
  string controller, object model)
{
  if (string.IsWhitespaceOrNull(controller)
    controller = ControllerContext.
                 RouteData.GetRequiredString(\"controller\");

  ViewDataDictionary viewData = 
    new ViewDataDictionary(ViewData) { Model = model };

  return ViewContent(view, controller, viewData);
}
    
在ASP.NET MVC中下载动态生成的文件 只需添加
Response.AddHeader(\"Content-Disposition\", \"attachment;filename=myfile.csv\"); 
ContentResult content = new ContentResult
        {
            ContentEncoding = System.Text.Encoding.UTF8,
            ContentType = \"text/csv\", Content=\"...\" } return content; }
    

要回复问题请先登录注册