zoukankan      html  css  js  c++  java
  • Razor 模板自己渲染出结果 string

    using Microsoft.AspNetCore.Http;
    using Microsoft.AspNetCore.Mvc.ModelBinding;
    using Microsoft.AspNetCore.Mvc.Razor;
    using Microsoft.AspNetCore.Mvc.Rendering;
    using Microsoft.AspNetCore.Mvc.ViewFeatures;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Threading.Tasks;
    
    namespace XXX
    {
        public class ViewRenderService
        {
            IRazorViewEngine _viewEngine;
            IHttpContextAccessor _httpContextAccessor;
    
            public ViewRenderService(IRazorViewEngine viewEngine, IHttpContextAccessor httpContextAccessor)
            {
                _viewEngine = viewEngine;
                _httpContextAccessor = httpContextAccessor;
            }
    
            public string Render(string viewPath)
            {
                return Render(viewPath, string.Empty);
            }
    
            public string Render<TModel>(string viewPath, TModel model)
            {
                var viewEngineResult = _viewEngine.GetView("~/", viewPath, false);
    
                if (!viewEngineResult.Success)
                {
                    throw new InvalidOperationException($"Couldn't find view {viewPath}");
                }
    
                var view = viewEngineResult.View;
    
                using (var output = new StringWriter())
                {
                    var viewContext = new ViewContext();
                    viewContext.HttpContext = _httpContextAccessor.HttpContext;
                    viewContext.ViewData = new ViewDataDictionary<TModel>(new EmptyModelMetadataProvider(), new ModelStateDictionary()) { Model = model };
                    viewContext.Writer = output;
    
                    view.RenderAsync(viewContext).GetAwaiter().GetResult();
    
                    return output.ToString();
                }
            }
        }
    }
    

    在 Startup.cs 里注册这个 service 类

    services.AddTransient<ViewRenderService>();
    

    在 controller 类中定义使用

    public class FriendlylinksController : BaseController {
    	private readonly ViewRenderService _viewRender;
    	public FriendlylinksController(ViewRenderService viewRender) {
    		_viewRender = viewRender;
    	}
    }
    
  • 相关阅读:
    贴板子系列_1-km算法,匈牙利算法
    bzoj 2333
    bzoj 3531 旅行
    斯坦纳树
    可持久化线段树
    下界最小费用最大流
    我们还是太NAive
    ubuntu出现有线已连接却无法上网
    python小爬虫【1】
    [解答]对‘’未定义的引用 collect2: 错误: ld 返回 1
  • 原文地址:https://www.cnblogs.com/kellynic/p/6070296.html
Copyright © 2011-2022 走看看