9 c# asp.net-mvc asp.net-mvc-4
我有下一个代码:
public class TemplateController : Controller
{
public ActionResult GetThreeColomnTemplate(SettingViewModel model)
{
...
return View("ThreeColomn",model);
}
}
Run Code Online (Sandbox Code Playgroud)
并有下一个问题 - 我该怎么做才能使我的Action返回生成的HTML文件作为下载文件.谢谢提前!
Ily*_*lya 18
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;
}
}
Run Code Online (Sandbox Code Playgroud)
注意:这只是一个例子.我建议把GetViewToString放在一个单独的类中.
| 归档时间: |
|
| 查看次数: |
6547 次 |
| 最近记录: |