Какой хороший шаблонизатор для консольного приложения .NET? - PullRequest
1 голос
/ 21 ноября 2010

Мы ищем быстрый и гибкий способ создания шаблонного контента (в данном случае персонализированные электронные письма в текстовом и HTML-формате) из консольного приложения .NET.

У нас нет VirtualPathProvider и нет действительного HttpContext.Current, что, исходя из наших первоначальных экспериментов, означает, что будет очень и очень трудно использовать движок представления WebForms и любой другой движок представления .NET (Spark, Razor) потребуется обширная сантехника, чтобы заставить их думать, что они работают в веб-приложении.

Я хочу сделать что-то вроде:

var customerTemplateData = GetTemplateDate(customer);
var htmlBody = templateEngine.Render("template.html", customerTemplateData);
var textBody = templateEngine.Render("template.txt", customerTemplateDate);
SendMail("me@mydomain.com", customer.Email, "Hey there!", htmlBody, textBody);

и я хочу сделать это со сложными вложенными данными, множеством списков внутри списков, до 1000 раз в минуту.

Буду признателен за любые рекомендации по выделенным движкам шаблонов или по способам запуска движков веб-представления в автономном контексте:)

Спасибо

Dylan

Ответы [ 3 ]

3 голосов
/ 22 ноября 2010

Если вы ищете руководство по достижению этого с помощью Spark, в исходном коде Spark можно найти полностью функциональный пример шаблона электронной почты и текста здесь .

Следует отметить, что на самом деле этот пример не зависит от HttpContext или любой другой веб-инфраструктуры. Он полностью независим и может запускаться так же легко, как консольное приложение.

Надеюсь, это поможет,
Всего наилучшего,
Rob

2 голосов
/ 21 ноября 2010

Существует довольно много способов создания шаблонного контента из командной строки, например, NVelocity, но недавно мы выпустили нашу оболочку синтаксического анализатора Razor на CodePlex (http://razorengine.codeplex.com/), которая, на мой взгляд,Стоит посмотреть.

0 голосов
/ 21 ноября 2010

Еще один, Механизм шаблонов StringTemplate .

Однако я обращаю внимание на RezorTemplateEngine!

...