web-dev-qa-db-fra.com

Pouvons-nous utiliser la syntaxe Razor dans les formulaires Web ASP.NET (pages * .aspx)?

J'aime la syntaxe Razor que Microsoft a développée pour le codage en ligne dans leur produit WebMatrix ( http://en.wikipedia.org/wiki/Microsoft_WebMatrix ).

Maintenant que Visual Studio SP1 a RTM'd, est-il possible (et/ou prévu) d'activer l'utilisation de la syntaxe Razor dans les formulaires Web ASP.NET?

40
cpuguru

Nous (l'équipe ASP.NET) n'avons actuellement aucun plan pour prendre en charge le modèle de page WebForms en utilisant la syntaxe Razor. De plus, il est peu probable que nous envisagions sérieusement cela, car les modèles sont trop différents pour que les deux fonctionnent ensemble.

46
marcind

Vous pouvez utiliser des pages Razor sans MVC; cela s'appelle ASP.Net WebPages.

Ajoutez simplement des fichiers .CSHTML à un projet ASP.Net 4.0 normal.

I a expliqué comment cela fonctionne dans mon blog.

30
SLaks

Vous pouvez éventuellement l'intégrer en utilisant le RazorEngine disponible sur Codeplex . Il vous permet de traiter le rasoir en dehors de MVC. Bien que vous n'obteniez pas toutes les fonctionnalités de la version MVC de Razor, telles que @Html et @Url et d'autres.

5
Buildstarted

Ce n'est vraiment pas si difficile à faire. Je travaille dessus maintenant. Récupérez RazorEngine dans CodePlex. Il vous permet de compiler les fichiers Rshor cshtml/vbhtml dans une classe au moment de l'exécution.

Vous pouvez ensuite prendre cette classe et l'utiliser à partir d'un contrôle serveur ASP.Net, à l'intérieur de sa méthode Render. C'est un excellent moyen d'extraire le HTML du corps d'un contrôle serveur. Beaucoup, beaucoup plus propre.

Maintenant, vous pouvez également ajouter des méthodes que vous pouvez invoquer depuis Razor. Par exemple, ajoutez quelque chose comme RenderChild. En outre, vous pouvez définir le contrôle serveur lui-même comme modèle disponible pour Razor. Vous pouvez ensuite invoquer dans le contrôle serveur. Y compris faire quelque chose comme saisir l'un de ses contrôles enfants et invoquer le rendu.

0
wasabi

J'ose dire que Microsoft y a réfléchi, mais il n'y a pas de mot officiel sur le sujet. Étant donné que vous n'êtes pas censé avoir C # ou VB dans le fichier ASPX, vous devez vous interroger sur l'intérêt d'ajouter la prise en charge de Razor aux formulaires Web. Le code derrière serait toujours un (partiel) fichier de classe. Vous ne mettriez pas Razor là-bas plus que vous ne le mettriez dans un fichier de classe dans les pages Web ou MVC. Route des formulaires, OMI.

0
Mike Brind