在服務器端基於Razor來生成html的一個思路 html
using System.Web.Mvc; mvc
using System.IO; app
using System.Web.Routing; asp.net
using System.Web; ide
public class MailTemplateController : ControllerBase spa
{ .net
protected override void ExecuteCore() { } htm
public static string RenderViewToString(string viewName, object viewData) get
{ string
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