Я пытаюсь отображать электронные письма на хосте службы Windows.
Я использую RazorEngine 3, разветвленный coxp, который поддерживает Razor 2. https://github.com/coxp/RazorEngine/tree/release-3.0/src
Это отлично работает для нескольких шаблонов электронной почты, но есть один, вызывающий у меня проблемы.
@model string
<a href="@Model" target="_blank">Click here</a> to enter a new password for your account.
Это вызывает исключение CompilationException: имя «WriteAttribute» не существует в текущем контексте. Таким образом, передача строки в качестве модели и помещение ее в атрибут href вызывает проблемы.
Я могу заставить его работать, изменив эту строку на:
@Raw(string.Format("<a href=\"{0}\" target=\"_blank\">Klik hier</a>.", @Model))
но это делает шаблон очень нечитаемым и трудным для передачи в отдел маркетинга для дальнейшей стилизации.
Я хотел бы добавить, что ссылка на RazorEngine с помощью пакета Nuget не является решением, поскольку он основан на Razor 1, и где-то в процессе DLL для system.web.razor заменяется версией 2, которая ломает любой код с использованием RazorEngine. Кажется более интересным использовать Razor 2, чтобы пользоваться новыми функциями и быть в курсе последних событий.
Любые предложения о том, как это исправить, были бы замечательными. Делиться своим опытом тоже очень приветствуется.
ОБНОВЛЕНИЕ 1
Кажется, вызов SetTemplateBaseType может помочь, но этого метода больше не существует, поэтому мне интересно, как можно привязать тип шаблона?
//Missing method in the new RazorEngine build from coxp.
Razor.SetTemplateBaseType(typeof(HtmlTemplateBase<>));