Можно ли использовать NHaml как шаблонный движок общего назначения? (вне MVC) - PullRequest
4 голосов
/ 08 декабря 2010

Я видел много людей, которым нравится использовать NHaml View Engine в ASP.NET MVC, но мне интересно, можно ли использовать NHaml как шаблонизатор общего назначения в .NET?Я хотел бы использовать NHaml из консольного приложения или создавать HTML-шаблоны электронной почты вне среды ASP MVC View Engine.Это возможно?Я не нашел много примеров кода, показывающих, как это сделать.Спасибо!

Ответы [ 2 ]

4 голосов
/ 08 декабря 2010

Да, его можно использовать без ASP.Net MVC.Я использую его для своего собственного веб-сервера (но это не значит, что вы ДОЛЖНЫ использовать его с веб-серверами).

Узнайте, как я его использую:у вас короче что-то типа этого:

TemplateEngine _templateEngine = new TemplateEngine();

// Add a type used in the template. Needed to that nhaml can find it when compiling the template
_templateEngine.Options.AddReferences(typeof (TypeInYourAssembly));

// base class for all templates
_templateEngine.Options.TemplateBaseType = typeof (BaseClassForTemplates);

//class providing content to the engine, should implement ITemplateContentProvider
_templateEngine.Options.TemplateContentProvider = this; 

// compile the template, 
CompiledTemplate template = _templateEngine.Compile(new List<string> {layoutName, viewPath},
                                                                typeof (TemplateImplementation));

//create a instance
var instance = (NHamlView)template.CreateInstance();

// provide the view data used by the template
instance.ViewData = viewData;

// render it into a text writer
instance.Render(writer);
0 голосов
/ 24 июня 2015

Последний NHaml облегчает:

    var te = XmlConfigurator.GetTemplateEngine("nhaml.config");

    var ct = te.GetCompiledTemplate(new FileViewSource(new FileInfo("period.nhaml")), typeof(Template));

    var template = ct.CreateTemplate();

    var viewData = new Dictionary<string,object>();

    template.ViewData = viewData;

    template.Render(writer);
...