簡體   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