[英]Converting cshtml file to raw html in ASP.NET Core
我可以将 cshtml 文件转换为原始 html 文件吗? 我正在寻找它,但找不到任何好的解决方案。
几个月前在 SO 找到了这个解决方案。
public class CustomViewRendererService
{
private readonly IRazorViewEngine _razorViewEngine;
private readonly ITempDataProvider _tempDataProvider;
public CustomViewRendererService(
IRazorViewEngine razorViewEngine,
ITempDataProvider tempDataProvider)
{
_razorViewEngine = razorViewEngine;
_tempDataProvider = tempDataProvider;
}
public async Task<string> RenderViewToStringAsync(ControllerContext actionContext, string viewPath,
object model)
{
var viewEngineResult = _razorViewEngine.GetView(viewPath, viewPath, false);
if (viewEngineResult.View == null || (!viewEngineResult.Success))
{
throw new ArgumentNullException($"Unable to find view '{viewPath}'");
}
var viewDictionary = new ViewDataDictionary(new EmptyModelMetadataProvider(), actionContext.ModelState);
viewDictionary.Model = model;
var view = viewEngineResult.View;
var tempData = new TempDataDictionary(actionContext.HttpContext, _tempDataProvider);
using var sw = new StringWriter();
var viewContext =
new ViewContext(actionContext, view, viewDictionary, tempData, sw, new HtmlHelperOptions());
await view.RenderAsync(viewContext);
return sw.ToString();
}
}
在 controller 内部使用:
const string templatePath = "~/Views/Email/Test.cshtml";
string msg = await _viewService.RenderViewToStringAsync(ControllerContext, templatePath, new EmailConfirmationBuilderViewModel(url));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.