zoukankan      html  css  js  c++  java
  • .NET MVC后台获得VIEW对应的html

    一、.Net Core Mvc下获得

        建立一个帮助类,如下:

    using Microsoft.AspNetCore.Mvc;
    using Microsoft.AspNetCore.Mvc.Rendering;
    using Microsoft.AspNetCore.Mvc.ViewEngines;
    using Microsoft.AspNetCore.Mvc.ViewFeatures;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Threading.Tasks;
    
    namespace NetCorePortal.Models
    {
        public class ViewHtmlHelper
        {
            public static string ConvertToString(Controller controller, string viewName, object viewModel, bool isMainPage)
            {
                controller.ViewData.Model = viewModel;
                using (StringWriter sw = new StringWriter())
                {
                    IViewEngine viewEngine = controller.HttpContext.RequestServices.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
                    ViewEngineResult viewEngineResult = viewEngine.FindView(controller.ControllerContext, viewName, isMainPage);
                    if (viewEngineResult.Success)
                    {
                        ViewContext viewContext = new ViewContext(
                            controller.ControllerContext,
                            viewEngineResult.View,
                            controller.ViewData,
                            controller.TempData,
                           sw,
                           new HtmlHelperOptions()
                            );
                        viewEngineResult.View.RenderAsync(viewContext);
                        return sw.GetStringBuilder().ToString();
                    }
                    else
                    {
                        return $"视图{viewName}不存在";
                    }
                }
            }
        }
    }

        后台调用方法

    public ContentResult ViewToStringDemo()
    {
        string strView = ViewHtmlHelper.ConvertToString(this, "Index", "", true);
        return Content(strView);
    }

     参考自:https://www.cjavapy.com/article/147/

    二、.Net Mvc下获得

    /// <summary>
    /// 获得LayTreeGrid视图的HTML内容
    /// </summary>
    /// <returns></returns>
    public ContentResult ViewText()
    {
         string html = string.Empty;
         IView view = ViewEngines.Engines.FindView(this.ControllerContext, "LayTreegrid", null).View;
    
         ViewDataDictionary vdd = new ViewDataDictionary();
         TempDataDictionary tdd = new TempDataDictionary();
         using (System.IO.StringWriter sw = new System.IO.StringWriter())
         {
             ViewContext viewContext = new ViewContext(this.ControllerContext, view, vdd, tdd, sw);
             viewContext.View.Render(viewContext, sw);
             html = sw.ToString();
         }
         return Content(html);
    }
  • 相关阅读:
    计算机基础(7)
    计算机基础(6)
    计算机基础(5)
    计算机基础(4)
    计算机基础(3)
    计算机基础(2)
    计算机基础(1)
    数组、函数
    js基础知识
    随笔3
  • 原文地址:https://www.cnblogs.com/zbspace/p/11623555.html
Copyright © 2011-2022 走看看