C# 如何将操作结果保存到文件中?
如何在asp.net MVC中将操作结果保存到磁盘上的文件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
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; }