Вопрос

Я столкнулся с необходимостью иметь возможность хранить шаблонизированный контент отдельно от кода, который генерирует динамические поля, заполняющие этот контент (например, слияние писем в Word).Вариант использования обычно вращается вокруг того факта, что я хочу написать код, который может отправлять некоторый тип динамического контента (часто электронное письмо), который я хочу позволить своим пользователям настраивать без изменения какого-либо кода.

Например, мы отправляем электронные письма нашим клиентам.В конечном итоге мы настраиваем отправляемые электронные письма и добавляем динамический контент (т. е.например, мы можем сказать «Дорогой {Contact.FirstName}»).Удобно закинуть формат этих писем в базу данных или какой-нибудь XML-файл и написать код, который выдает ему значения всех свойств по отдельности.Поэтому создайте Email.XML с содержимым и механизмом, который принимает этот XML-файл, передает ему объект Contact и возвращает HTML-код электронного письма.Концептуально это очень похоже на цель разделения уровня представления в шаблоне MVC (в данном случае представлением является электронное письмо, движок — контроллером, а объект контакта — моделью).

Похоже, что в пространстве .Net есть два претендента (оба порта Java) (есть еще здесь но они довольно нишевые игроки).

Кто-нибудь использовал какой-либо из этих или других движков шаблонизации?Каковы ключевые различия между ними, которые я должен учитывать при выборе?

Это было полезно?

Решение

я использовал Стрингтемплате.NET и наслаждался этим опытом.Потребовалось некоторое время, чтобы приспособиться к их мировоззрению — такие вещи, как зацикливание, поначалу кажутся загадочными.Запрещение вызовов шаблонов в код противоречит принципам большинства других библиотек шаблонов.Но как только вы к этому привыкнете, их решения обретут смысл и станут естественными.

Другие советы

Я просто использовал RegEx.Replace и для каждого совпадения, найденного между { и }, я искал тег в словаре <,> и выполнял ITagParser.

Дорогой {Приветствие} {FamilyName}

Текущая дата: {Сейчас=гггг-ММ-дд}.

Где = — необязательный формат.

Это было слишком мало работы, чтобы оправдать стороннюю библиотеку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top