如何將操作結果保存到asp.net MVC中的磁盤上的文件?如何將操作結果保存到文件?
public void Test()
{
var x = view();
//save x as a file on disk
}
如何將操作結果保存到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);
}
Download Dynamically Generated File in 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; }
請更具體地回答您的問題,因爲在這種情況下,您並未解釋Response.AddHeader如何與ContentResult對象綁定以及爲什麼。 – Fandango68 2017-11-24 00:25:45
你可能會詳細一點嗎?你到底想把什麼保存到磁盤? – tobias86 2011-05-26 07:21:52
我知道怎麼做'ViewResult'。如果你需要這樣的東西,我可以給你一個樣品。 – 2011-05-26 07:24:50
你好?你還活着嗎?社區越來越擔心,你問了一個問題,收到了兩條評論和一個答案,而你沒有迴應。我們應該派出一個搜索派對嗎? – 2011-05-31 22:08:41