[英]ASP.NET MVC return ViewResult as html file
我有下一個代碼:
public class TemplateController : Controller
{
public ActionResult GetThreeColomnTemplate(SettingViewModel model)
{
...
return View("ThreeColomn",model);
}
}
並有下一個問題 - 我該怎么做才能使我的Action返回生成的HTML文件作為下載文件。 謝謝提前!
public class TemplateController : Controller
{
public ActionResult GetThreeColomnTemplate(SettingViewModel model)
{
...
return View("ThreeColomn",model);
}
public ActionResult GetThreeColomnTemplateAsFile(SettingViewModel model)
{
SettingViewModel model = ...
ViewEngineResult result = ViewEngines.Engines.FindView(this.ControllerContext, "ThreeColomn", "_Layout");
string htmlTextView = GetViewToString(this.ControllerContext, result, model);
byte[] toBytes = Encoding.Unicode.GetBytes(htmlTextView);
return File(toBytes, "application/file","template.html");
}
private string GetViewToString(ControllerContext context, ViewEngineResult result, object model)
{
string viewResult = "";
var viewData = ViewData;
viewData.Model = model;
TempDataDictionary tempData = new TempDataDictionary();
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
using (HtmlTextWriter output = new HtmlTextWriter(sw))
{
ViewContext viewContext = new ViewContext(context,
result.View, viewData, tempData, output);
result.View.Render(viewContext, output);
}
viewResult = sb.ToString();
}
return viewResult;
}
}
注意:這只是一個例子。 我建議把GetViewToString放在一個單獨的類中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.