Question

Si je regarde le rasoir Voir Engine, puis je vois une syntaxe très agréable et concise qui est pas particulièrement lié à la génération html. Alors je me demande, comment serait-il facile d'utiliser le asp.net de l'extérieur du moteur dans un environnement .net « normal », par exemple pour générer du texte, code, ...

Tout pointeur, par exemple, un commentaire ou explication est la bienvenue.

Était-ce utile?

La solution

Il y a deux questions ici:

  1. Oui, vous pouvez exécuter le rasoir View Engine en dehors du contexte d'un domaine d'application ASP.NET, comme expliqué dans le blog d'Andrew: http://vibrantcode.com/blog/2010/11/16/hosting-razor-outside-of -aspnet-révisée-pour-MVC3-rc.html
  2. Cependant, rasoir est encore principalement axé sur la production xml-like balisage (par exemple HTML) en ce sens que l'analyseur Razor utilise la présence de <tags> pour déterminer la transition entre le code et le balisage. Vous pouvez probablement l'utiliser pour générer un texte, mais vous pourriez rencontrer des problèmes lorsque votre sortie ne correspond pas aux hypothèses de rasoir sur ce que vos intentions.

Ainsi, par exemple alors que c'est un code valide Razor (à cause de la balise <div>):

@if(printHello) {
   <div>Hello!</div>
}

L'extrait suivant est invalide (parce que le Bonjour est toujours traité comme code!):

@if(printHello) {
   Hello!
}

Cependant, il y a une balise spéciale de <text> qui peut être utilisé pour forcer une transition pour les blocs multi-lignes (la balise <text> ne sera pas rendu):

@if(printHello) {
   <text>Hello!
   Another line</text>
}

Il y a également une syntaxe plus courte pour forcer une seule ligne de transition en utilisant @::

@if(printHello) {
   @:Hello!
}

Autres conseils

Vérifier RazorEngine , il est un peu cadre construit au-dessus de rasoir qui vous permet de le faire.

Jetez un oeil à RazorTemplates bibliothèque. Il est plus léger que la bibliothèque RazorEngine, il est thread-safe et a une très belle interface minimale.

Compiler et le rendu d'un modèle est aussi simple que deux lignes de code:

var template = Template.Compile("Hello @Model.Name!");
Console.WriteLine(template.Render(new { Name = "World" }));

Les deux RazorEngine et RazorTemplates sont déjà mentionnés ici, mais il faut vérifier sur RazorMachine . Vous pouvez simplement pointer votre application MVC non à un dossier ~ / Vues de (autre) application MVC existante, exécuter l'envoi modèle adéquat et obtenir une sortie rendu sur 2 lignes de code:

var sb = new StringBuilder();

//RazorMachine magic:
//*tweets* is basically List<TwitterPost> - simple collection of custom POCO
//first param for rm.ExecuteUrl points to ~/Views folder, MVC style
var rm = new RazorMachine(htmlEncode: false);
ITemplate template = rm.ExecuteUrl("~/twitter/twitter", tweets);

//do whatever you want with result
sb.Append(template);

Générer du code ou texte: vous voulez dire, comme T4 Modèles: http: // msdn.microsoft.com/en-us/library/bb126445.aspx ou outils CodeSmith?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top