WebApi中利用Razor模板引擎来生成html

在服器端基于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

转载于:https://www.cnblogs.com/teamleader/p/6541621.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值