web-dev-qa-db-fra.com

Pouvez-vous recommander un moteur de template .net?

Je cherche un moteur de gabarit .net - quelque chose de simple, léger, stable avec pas trop de dépendances. Pour le moment, tout ce dont j'ai besoin, c'est de créer des courriels textuels et HTML au format template. Quelqu'un peut-il me donner une bonne recommandation?

Si cela vous aide, quelque chose comme les bibliothèques Freemarker ou Velocity de Java.

[MISE À JOUR] Merci pour les réponses reçues jusqu'à présent - très apprécié. Je suis vraiment intéressé par les recommandations ou les histoires de guerre de quand vous avez utilisé ces bibliothèques. Semble être le meilleur moyen de prendre une décision sans essayer chacun à son tour.

48
serg10

En voici quelques autres:

À propos de NVelocity, il a été développé par les gars de Castle, il est en train de se développer ici

Pour les emails, je n'ai jamais eu besoin de plus que NVelocity.

21
Mauricio Scheffer

RazorEngine, un moteur de templates basé sur le moteur d'analyse de Razor de Microsoft.

https://github.com/Antaris/RazorEngine

Je ne l'ai pas utilisé, mais je le trouve intéressant car, si vous avez un arrière-plan ASP.NET MVC, vous n'avez pas besoin d'apprendre quelque chose de nouveau.

6
CGK

Liste plus complète

  • Moteur de visualisation WebForm intégré dans ASP.Net
  • ASPView
  • Brail 
  • NHaml (port .Net de Haml)
  • Étincelle
  • NVelocity
  • StringTemplate.Net
5
Palani

Je recommanderais Générateur CodeSmith . C'est un générateur de code basé sur des modèles, avec des mises à jour constantes et une communauté active. Voici une liste de des modèles fournis avec CodeSmith Generator.

5
KellyCoinGuy

string template des personnes anltr.org avec aussi la version C # .

3
kenny

Je viens de publier un projet open source. Il est principalement destiné aux modèles de courrier électronique, mais vous pouvez utiliser l'analyseur lui-même si vous le souhaitez. Vous pouvez lire plus de détails et récupérer le code source de mon blog.

http://thecodedecanter.wordpress.com/2010/19/town-crier-an-open-source-e-mail-templating-engine-for-net/

2
Oenotria

Certains tests avec les guidons, RazorEngine et SharpTAL ci-dessous: 

namespace ConsoleApplication4
{
class Program
{
    static void Main(string[] args)
    {

        Stopwatch sw = new Stopwatch();

        //RAZOR
        string razorTemplate = @"@model ConsoleApplication4.Test
                                <h1>@Model.Title</h1>
                                @if(Model.Condition1)
                                {
                                    <span>condition1 is true</span>
                                }
                                <div>
                                    @foreach(var movie in Model.Movies)
                                        {<span>@movie</span>}
                                </div>";

        //burning
        Engine.Razor.RunCompile(razorTemplate, "templateKey", typeof(Test), new Test());
        sw.Start();
        var result1 = Engine.Razor.RunCompile(razorTemplate, "templateKey", typeof(Test), new Test());
        sw.Stop();
        Console.WriteLine("razor : "+sw.Elapsed);


        //SHARPTAL
        string sharpTalTemplate = @"<h1>${Title}</h1>             
                                    <span tal:condition=""Condition1"">condition1 is true</span>                                    

                                         <div tal:repeat='movie Movies'>${movie}</div>";


        var test = new Test();
        var globals = new Dictionary<string, object>
        {
            { "Movies", new List<string> {test.Movies[0],test.Movies[1],test.Movies[2] } },
            { "Condition1", test.Condition1 },
            { "Title", test.Title },
        };



        var tt = new Template(sharpTalTemplate);
        tt.Render(globals);
        sw.Restart();
        var tt2 = new Template(sharpTalTemplate);
        var result2 = tt2.Render(globals);
        sw.Stop();
        Console.WriteLine("sharptal : " + sw.Elapsed);



        //HANDLEBARS
        string handleBarsTemplate = @"<h1>{{Title}}</h1>
                                {{#if Condition1}}                                    
                                    <span>condition1 is true</span>
                                {{/if}}
                                <div>
                                    {{#each Movies}}
                                        <span>{{this}}</span>
                                    {{/each}}                                        
                                </div>";
        var tt3 = Handlebars.Compile(handleBarsTemplate);
        sw.Restart();
        var result3 = tt3(new Test());
        sw.Stop();
        Console.WriteLine("handlebars : " + sw.Elapsed);

        Console.WriteLine("-----------------------------");
        Console.WriteLine(result1);
        Console.WriteLine(result2);
        Console.WriteLine(result3);

        Console.ReadLine();
    }
}

public class Test
{
    public bool Condition1 { get; set; }
    public List<string> Movies { get; set; }
    public string Title { get; set; }

    public Test()
    {
        Condition1 = true;
        Movies = new List<string>() { "Rocky", "The Fifth Element", "Intouchables" };
        Title = "Hi stackoverflow! Below you can find good movie list! Have a good day.";
    }
}


}

et résultats: 

 code results

2
Nigrimmist

Je pense que Moustache (http://mustache.github.com/) pourrait également convenir.

2
mp31415

DotLiquid est un très joli système de templates pour .NET. 

Il est dérivé de Ruby’s Liquid Markup, avec les exigences .NET Framework 3.5 ou supérieures.

1
dns

XCST (modèles eXtensible C-Sharp)

<ul>
   <c:for-each name='n' in='System.Linq.Enumerable.Range(1, 5)' expand-text='yes'>
      <li>{n}</li>
   </c:for-each>
</ul>
1
Max Toro

essayez celui-ci: Email Template Framework http://www.bitethebullet.co.uk/Email_Template_Framework.aspx

Cela fonctionne très bien sous ASP.NET et WinForms et est toujours en développement actif. Il existe également une très belle documentation et des exemples faciles à creuser.

1
binball

SharpTAL - moteur autonome en développement actif et sans dépendances, rapide

0
rlacko

Avez-vous vu NVelocity, un portage .NET de Velocity? http://nvelocity.sourceforge.net/

0
MattValerio

NVELOCITY, bien que vieux, dernière version en 2003, ça suffit.

0
Tredency
0
Samiksha