惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
Recent Announcements
Recent Announcements
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Security Blog
Microsoft Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
J
Java Code Geeks
V
V2EX
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
博客园 - Franky
爱范儿
爱范儿
T
Tailwind CSS Blog
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
博客园_首页
B
Blog RSS Feed
博客园 - 司徒正美
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - 队长

利用selenium将edge浏览器里面的网页保存为pdf DataSet 序列化时保持行状态 Netcore logging config Some good articles Microservices with Spring Boot ngrok的简单使用 - 队长 通过Ajax上传文件至WebApi服务器 Simple Pipelined Function Simple layout Spring Boot - Filter实现简单的Http Basic认证 EF DI & MVC EF UoC ks 图片 UEditor Alvin temp Assembly binding Tech Links
WebApi中利用Razor模板引擎来生成html
队长 · 2017-03-13 · via 博客园 - 队长

在服器端基于Razor来生成html的一个思路

using System.Web.Mvc;

using System.IO;

using System.Web.Routing;

using System.Web;   

public class MailTemplateController : ControllerBase

    {

        protected override void ExecuteCore() { }

        public static string RenderViewToString(string viewName, object viewData)

        {

            using (var writer = new StringWriter())

            {

                var routeData = new RouteData();

                routeData.Values.Add("controller", "DummyController");

                var fakeControllerContext = new ControllerContext(new HttpContextWrapper(

                    new HttpContext(new HttpRequest(null, "http://dummy.com", null),

                        new HttpResponse(null))), routeData, new MailTemplateController());

                var razorViewEngine = new RazorViewEngine();

                var razorViewResult = razorViewEngine.FindView(fakeControllerContext, viewName, "", false);

                var viewContext = new ViewContext(fakeControllerContext, razorViewResult.View, new ViewDataDictionary(viewData), new TempDataDictionary(), writer);

                razorViewResult.View.Render(viewContext, writer);

                return writer.ToString();

            }

        }

    }

RenderViewToString("~/Views/Home/Index.cshtml", new MailModel());

注意Views所在目录下需要有一个Web.config文件

RazorRazor语法参考:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/razor

灵感之源:

http://stackoverflow.com/questions/23494741/mvc-5-render-view-to-string

https://forums.asp.net/t/2017674.aspx?How+to+return+rendered+razor+view+from+Web+API+controller