Razor 来自microsoft的任何内置html模板打包程序
Razorengine已被用作运行时html打包程序,但维护和支持似乎已停止一年 我已经调查了一些,目前Scriban似乎是合适的人选。 然而,在将其应用于解决方案之前,我想确定微软是否没有自己的库,而不是不保证维护第三方库Razor 来自microsoft的任何内置html模板打包程序,razor,asp.net-core,razorengine,Razor,Asp.net Core,Razorengine,Razorengine已被用作运行时html打包程序,但维护和支持似乎已停止一年 我已经调查了一些,目前Scriban似乎是合适的人选。 然而,在将其应用于解决方案之前,我想确定微软是否没有自己的库,而不是不保证维护第三方库 或者,我可以只使用razor中最少的必要特性来实现使用razor绑定创建html运行时吗?例如,通过添加一些引用 如果您需要基于ASP.NET核心创建模板服务RazorEngine您可以通过DI获得所有需要的服务: public TemplateService(IRazor
或者,我可以只使用razor中最少的必要特性来实现使用razor绑定创建html运行时吗?例如,通过添加一些引用 如果您需要基于
ASP.NET核心创建模板服务
RazorEngine
您可以通过DI
获得所有需要的服务:
public TemplateService(IRazorViewEngine viewEngine, IServiceProvider serviceProvider, ITempDataProvider tempDataProvider)
{
_viewEngine = viewEngine;
_serviceProvider = serviceProvider;
_tempDataProvider = tempDataProvider;
}
在Startup
类中的DI
中注册:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddScoped<ITemplateService, TemplateService>();
// ...
}
因此,Controller
中的调用可能如下所示:
var htmlContent = await _templateService.RenderTemplateAsync(
"Email/MyEmailTemplate",
new MyEmailTemplateModel
{
ToFullName = "Dmitry Pavlov",
Link = "https://stackoverflow.com/users/804385/dmitry-pavlov",
SenderName = "Software in healthcare / medical device",
CustomText = "Thanks for the tip! I have got it now. Appreciate your help!"
});
此
HTML
文本将显示呈现的视图的输出,模型绑定到Razor
占位符,如此视图中的@model.ToFullName
。我想你会在模板视图中使用一些布局(我建议将所有需要的CSS
样式嵌入其中-实际上你可以使用通用的HTML
标记创建特殊的\EmailTemplateLayout
文件,并为所有电子邮件模板指定layout
) 谢谢你的帮助。你能再给我一点建议吗?我对剃须刀不太熟悉。我相信我当前的VS项目有Microsoft.AspNet.Razor,但它从未配置为MVC项目,更像是一个WEB API项目。在这种情况下,我还需要什么其他配置才能使其与上述代码一起工作?您可以演示如何将此服务添加到现有项目中的示例吗?您需要在启动中的DI
中注册模板服务。ConfigureServices
方法如下:services.AddScoped();然后,您可以通过控制器构造函数或其他服务构造函数通过DI注入访问ITemplateService
var htmlContent = await _templateService.RenderTemplateAsync(
"Email/MyEmailTemplate",
new MyEmailTemplateModel
{
ToFullName = "Dmitry Pavlov",
Link = "https://stackoverflow.com/users/804385/dmitry-pavlov",
SenderName = "Software in healthcare / medical device",
CustomText = "Thanks for the tip! I have got it now. Appreciate your help!"
});