102 votes

Est-il possible d'utiliser Razor View Engine en dehors de asp.net

Si je regarde Razor View Engine, je vois une syntaxe très agréable et concise qui n'est pas particulièrement liée à la génération de code HTML. Je me demande donc à quel point il serait facile d’utiliser le moteur hors asp.net dans un environnement .net "normal", par exemple pour générer du texte, du code, ...

Tout pointeur, exemple, commentaire ou explication est le bienvenu.

79voto

marcind Points 38002

Il y a deux problèmes ici:

  1. Oui, vous pouvez exécuter le Rasoir Moteur d'Affichage à l'extérieur du contexte d'une ASP.NET le domaine de l'application, comme l'explique Andrew blog: http://vibrantcode.com/blog/2010/11/16/hosting-razor-outside-of-aspnet-revised-for-mvc3-rc.html
  2. Cependant, Rasoir est encore principalement axée sur la génération de xml comme de balisage (HTML par exemple), dans le sens que le Rasoir analyseur utilise la présence d' <tags> pour déterminer la transition entre le code et le balisage. Vous pouvez probablement l'utiliser pour générer n'importe quel texte, mais vous risquez de rencontrer des problèmes lors de votre sortie ne correspond pas du Rasoir hypothèses sur ce que sont vos intentions.

Ainsi, par exemple, alors que c'est valable Rasoir code (en raison de l' <div> tag):

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

L'extrait de code suivant n'est pas valide (parce que le Hello! est encore en cours de trated que le code):

@if(printHello) {
   Hello!
}

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

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

Il y a aussi une syntaxe plus courte à la force d'une seule ligne à la transition de l'aide d' @::

@if(printHello) {
   @:Hello!
}

33voto

Ariel Points 810

Consultez http://razorengine.codeplex.com/ , c'est un petit framework construit sur Razor qui vous permet de le faire.

21voto

alexey Points 2958

Jetez un coup d'œil à la bibliothèque RazorTemplates . Il est plus léger que la bibliothèque RazorEngine, il est thread-safe et possède une interface minimale très agréable.

Compiler et rendre 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" }));
 

9voto

Antonin Jelinek Points 347

RazorEngine et RazorTemplates sont déjà mentionnés ici, mais consultez RazorMachine . Vous pouvez simplement faire pointer votre application non-MVC vers un dossier ~ / Views d'une (autre) application MVC existante, exécuter l'envoi du modèle approprié et obtenir une sortie rendue 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);
 

3voto

Brian Mains Points 31772

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X