J'ai vu beaucoup de gens qui aiment utiliser NHaml View Engine dans ASP.NET MVC, mais je me demande si NHaml peut être utilisé comme un moteur de template générique dans .NET? Je souhaite utiliser NHaml à partir d'une application Console ou pour générer des modèles d'e-mails HTML en dehors de l'environnement ASP MVC View Engine. Est-ce possible? Je n'ai pas trouvé beaucoup d'exemples de code montrant comment faire cela. Merci!NHaml peut-il être utilisé comme moteur de template général? (en dehors de MVC)
Répondre
Oui, il peut être utilisé sans ASP.Net MVC. Je l'utilise pour mon propre serveur web (mais cela ne signifie pas que vous devez l'utiliser avec des serveurs web).
Découvrez comment je l'utilise ici: http://webserver.codeplex.com/SourceControl/changeset/view/50874#671672
Ce que vous faites en un mot est quelque chose comme ceci:
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);
pourquoi le vote à la baisse? – jgauffin
Aucune idée, j'ai 1+ de moi pour être au point et très utile :-) –
Dernières NHaml facilite:
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);
Apparemment Razor nouveau moteur de vue dans MVC 3 peut être utilisé autonome sans ASP.NET pour les choses que vous décrivez. Cela dépendra donc de la façon dont NHaml est faiblement couplé avec l'environnement d'exécution ASP.NET. – GiddyUpHorsey
Élaborez votre question si ma réponse n'aide pas. – jgauffin