Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将操作结果保存到文件中?_C#_Asp.net Mvc - Fatal编程技术网

C# 如何将操作结果保存到文件中?

C# 如何将操作结果保存到文件中?,c#,asp.net-mvc,C#,Asp.net Mvc,如何在asp.net MVC中将操作结果保存到磁盘上的文件 public void Test() { var x = view(); //save x as a file on disk } 此方法(作为方法添加到控制器类型)将定位并激发视图,并以字符串形式返回视图结果 然后你可以拿着绳子做你想做的事 我用它来制作电子邮件模板 protected string ViewContent(string view, string controller, ViewDataDictiona

如何在asp.net MVC中将操作结果保存到磁盘上的文件

public void Test()
{
  var x = view();
  //save x as a file on disk
}
此方法(作为方法添加到控制器类型)将定位并激发视图,并以字符串形式返回视图结果

然后你可以拿着绳子做你想做的事

我用它来制作电子邮件模板

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);
}

简单地加上


你能详细说明一下吗?您到底想保存什么到磁盘?我知道如何为
ViewResult
保存。如果你需要这样的东西,我可以给你一个样品。喂?你还活着吗?社区开始担心了,你问了一个问题,收到了两条评论和一个答案,但你没有回应。我们应该发送一个搜索组吗?请更具体地给出您的答案,因为在本例中,您没有解释Response.AddHeader如何与ContentResult对象绑定以及为什么绑定。
Response.AddHeader("Content-Disposition", "attachment;filename=myfile.csv"); 
ContentResult content = new ContentResult
        {
            ContentEncoding = System.Text.Encoding.UTF8,
            ContentType = "text/csv", Content="..." } return content; }