Puteți recomanda un motor de șabloane .net? [închis] (Programare, Asp.Net, Șabloane, Viewengine, Motor De Modelare)

serg10 a intrebat.

Caut un motor de șabloane .net – ceva simplu, ușor, stabil și fără prea multe dependențe. Tot ceea ce am nevoie de el în acest moment este crearea de emailuri template de text simplu și html. Poate cineva să-mi dea o recomandare bună?

Dacă vă ajută cu ceva – ceva de genul Java’s Freemarker sau Velocity biblioteci.

[UPDATE]Mulțumesc pentru răspunsurile de până acum – foarte apreciat. Sunt foarte interesat de recomandări sau povești de război de când ați folosit aceste biblioteci. Pare a fi cel mai bun mod de a lua o decizie fără a încerca fiecare în parte.

15 răspunsuri
Mauricio Scheffer

Iată încă câteva:

Despre NVelocity, a fost bifurcat de cei de la Castle, este în curs de dezvoltare. aici

Pentru e-mailuri, nu am avut niciodată nevoie de mai mult decât NVelocity.

Comentarii

  • Mulțumesc pentru asta mausch. Ați avut probleme cu NVelocity? –  > Por serg10.
  • Da, există câteva probleme minore, de exemplu aceasta: forum.castleproject.org/viewtopic.php?t=4781 –  > Por Mauricio Scheffer.
  • Toate linkurile sunt cam moarte… –  > Por Asken.
  • @Asken doar unul singur de fapt, și IMHO că este destul de decent pentru un răspuns care este șapte ani în urmă. –  > Por Mauricio Scheffer.
  • Întreținerea este, de asemenea, importantă. Există deja o mașină de retrocedare 🙂 –  > Por Asken.
CGK

RazorEngine, Un motor de modelare construit pe motorul de parsing Razor al Microsoft.

https://github.com/Antaris/RazorEngine

Nu l-am folosit, dar mi se pare interesant pentru că, dacă aveți un background ASP.NET MVC, nu va fi nevoie să învățați ceva nou.

Comentarii

  • Era vorba de unele dependențe, iar eu am avut multe probleme din cauza utilizării unei versiuni mai vechi de system.web.razor și razorEngine are nevoie de una mai nouă, astfel că în local nu am avut probleme din cauza ansamblurilor GAC, dar pe serverul de la distanță 🙁 în cele din urmă am preferat să folosesc un alt motor de șabloane decât să pierd timpul cu testarea conflictului de versiuni și etc. –  > Por QMaster.
Palani

O listă mai completă

  • Motorul de vizualizare WebForm încorporat în ASP.Net
  • ASPView
  • Brail
  • NHaml (.Net port of Haml)
  • Spark
  • NVelocity
  • StringTemplate.Net

KellyCoinGuy

Aș recomanda Generator CodeSmith. Este un generator de cod bazat pe șablon, cu actualizări constante și o comunitate activă. Aici este un listă de șabloane care se livrează cu CodeSmith Generator.

kenny

șablon șir de caractere de la cei de la anltr.org cu un versiune C#.

Nigrimmist

Câteva teste cu Handlebars, RazorEngine și SharpTAL mai jos :

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.";
    }
}


}

și rezultatele :

Oenotria

Tocmai am lansat un proiect open source. Este destinat în principal pentru template-uri de e-mail, dar ați putea folosi parserul de unul singur dacă doriți. Puteți citi mai multe detalii și puteți lua codul sursă de pe blogul meu.

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

mp31415

Cred că și Mustache (http://mustache.github.com/) s-ar putea potrivi.

dns

DotLiquid este un sistem de modelare foarte bun pentru .NET.

Este derivat din Ruby’s Liquid Markup, cu cerințe .NET Framework 3.5 sau mai sus.

binball

Încercați-l pe acesta: Email Template Framework http://www.bitethebullet.co.uk/Email_Template_Framework.aspx

Funcționează foarte bine sub ASP.NET și WinForms și este încă în dezvoltare activă. Există, de asemenea, o documentație foarte bună și exemple ușor de aprofundat.

Comentarii

Max Toro

XCST (eXtensible C-Sharp Templates)

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

MattValerio

Ați văzut NVelocity, un port .NET al Velocity?http://nvelocity.sourceforge.net/

Comentarii

  • Da – Google a găsit-o, dar nu pare foarte activă. Nimic din 2003 încoace. Ați folosit-o? –  > Por serg10.
  • a fost creat de Castle la castleproject.org/castle/projects.html –  > Por jhexp.
Samiksha

Comentarii

  • Ai folosit vreuna din bibliotecile enumerate în primul link? –  > Por serg10.
Tredency

NVELOCITY, deși este veche ,ultima versiune în 2003, suficient.

rlacko

SharpTAL – motor independent în dezvoltare activă și fără dependențe, rapid