Sunday, October 26, 2008

J'ai utilisé : TemplateMaschine c#

J'ai utilisé : TemplateMaschine

Utiliser pour generer des pages web :

La template :

Bon je vais vous decrire brievement :
Ma page html doit contenir une entete declarative des variables utilisés :

<%@ Import NameSpace="System.Collections.Generic" %&rt;
<%@ Argument Name="elm" Type="List" %>
<%@ Argument Name="content" Type="String" %>



J'importe le namespace pour utilisé les listes ( NET 2 )
Et j'ai une liste de pages en liens ( home , galllery , product , contact .... )
Et aussi un contenu html

Voici l'integration dans la page web.
...
[html]
....

<% int n = 0; foreach(string attr in elm) { %>

[html]

<%=attr%>

[html]
.....
<% } %>
..

et pour la variable contenu :

[html]
<%=content%>
[html]

[html] : reprensente de code html difficilement integrable ici.
Le code est placé ente <% et %> ( comme en ASP , et peut etre JSP ) ( PHP etant et co )
Ici pas de echo "content" ( php ) , mais <%=content%> pour afficher la valeur string de la variable

J'ai un mauvais souvenir des jsp car ils modifé la page en l'incluant dans du code ...
et le compile dans un fichier temporaire ...

Bon la c'est un peu la meme chose je crois , on profite des fonctionnalités de la compilation dynamique de c#/dotnet ( donet ecrit et compile apres le fichier dans un repertoire temporaire)

Evaluate C# Code (Eval Function)
icc.CompileAssemblyFromSource
Le source c#:

il faut importer
using TemplateMaschine;

L'appel a template se faire alors ainsi :

Template myTemplate = new Template(GetTemplatePage());

myTemplate.Generate(
new object[] {
elmPages, /// <- ceci est une List
page.HtmlContent,
}
, "generated\\" + page.Name + ".html"
);


Moi je suis content car ca marche plus bien , bravo a l'auteur de ces classes de template
me permettant d'avoir l'ensemble de la puissance de c#

Cependant pour des templates Html, il faut patcher TemplateMaschine.cs.
Il faut modifier la methode private TokenInfo NextToken() pour que les commentaires et les scripts ne soient pas pris en compte.

No comments: