Я использую RazorEngine для создания системы шаблонов электронной почты и хотел бы поддерживать вспомогательные функции в отдельных файлах cshtml из моих основных шаблонов.Например, скажем, у меня есть структура папок, подобная этой:
/Templates
Support.cshtml
Registration.cshtml
Marketing.cshtml
/Helpers
/Shared
Common.cshtml
Images.cshtml
/Marketing
Ads.cshtml
Products.cshtml
Мне бы хотелось, чтобы шаблоны обращались к помощникам следующим образом:
<body>
@Common.Header()
<img src="@Images.Resize(@Model.ImageUrl)" />
</body>
Но причина, по которой яЯ хотел бы, чтобы они назывались в пространстве имен, потому что я хотел бы сказать, что команда рекламы сможет писать и поддерживать помощников, не беспокоясь о конфликтах имен, скажем, с обычными помощниками или любой другой командой.Они могли бы с уверенностью назвать помощника Resize()
, не беспокоясь о @Images.Resize
, потому что к их помощнику обращались бы как @Ads.Resize
или @Marketing.Ads.Resize()
.
Это кажется несколько возможным на основании того, как помощники работают в собственной реализацииRazor (https://docs.microsoft.com/en-us/aspnet/web-pages/overview/ui-layouts-and-themes/creating-and-using-a-helper-in-an-aspnet-web-pages-site), но наша кодовая база распределена и поэтому не имеет папки App_Code, а также RazorEngine во многом отличается, поэтому я не смог заставить его работать.
Сейчас я получаю своих помощников в шаблоны с помощью конкатенации строк, что также кажется неправильным, поэтому есть ли способ заставить эту работу работать с RazorEngine?