繁体   English   中英

ASP.NET MVC将ViewResult作为html文件返回

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM