Любой встроенный упаковщик HTML-шаблонов от Microsoft - PullRequest
0 голосов
/ 26 сентября 2018

Razorengine использовался в качестве html-упаковщика во время выполнения, но, похоже, обслуживание и поддержка были прекращены на год.

Я рассмотрел некоторые из них, и в настоящее время Scriban кажется подходящим.Однако, прежде чем использовать это в решении, я хочу убедиться, что у Microsoft нет собственной библиотеки, а не нет гарантии на обслуживание сторонних.

или я могу использовать только минимально необходимые функции из работы с бритвойпросто для достижения создания HTML времени выполнения с помощью привязки бритвы?Например, добавив несколько ссылок ..

1 Ответ

0 голосов
/ 26 сентября 2018

Если вам нужно создать шаблон службы на основе ASP.NET Core RazorEngine, вы можете получить все необходимые службы через DI:

public TemplateService(IRazorViewEngine viewEngine, IServiceProvider serviceProvider, ITempDataProvider tempDataProvider)
{
    _viewEngine = viewEngine;
    _serviceProvider = serviceProvider;
    _tempDataProvider = tempDataProvider;
}

Зарегистрируйтесь в DI в вашем Startup class:

public void ConfigureServices(IServiceCollection services)
{
    // ...
    services.AddScoped<ITemplateService, TemplateService>();
    // ...
}

И тогда вы можете получить доступ к ITemplateService, предоставив его конструктору класса Controller или другой службы.И используйте Views и ViewModels для генерации HTML с использованием метода RenderTemplateAsync См. Подробности реализации здесь :

public async Task<string> RenderTemplateAsync<TViewModel>(string viewFilename, TViewModel viewModel)
{ 
    // ... see the details by the link above
}

Так что вызов в Controller может выглядеть следующим образомthis:

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 будет отображать результат визуализации View с моделью, связанной с Razor заполнителями, такими как @ Model.ToFullName в этом View.Я предполагаю, что вы будете использовать какой-то макет для представления шаблона (я бы порекомендовал встроить в него все необходимые CSS стили - на самом деле вы можете создать специальный файл _EmailTemplateLayout с общей разметкой HTML и указать это как Layout длявсе ваши шаблоны электронной почты).

...