web-dev-qa-db-fra.com

Quoi, pourquoi ou quand il vaut mieux choisir cshtml vs aspx?

J'aimerais savoir quoi, pourquoi ou quand il vaut mieux choisir cshtml et quoi, pourquoi ou quand il vaut mieux choisir les technologies aspx? A quoi servent ces deux technologies?

Merci,

103
Bastien Vandamme

Comme d'autres personnes ont répondu, .cshtml (ou .vbhtml si c'est votre cas) fournit un mappage de gestionnaire pour charger le moteur MVC. L'extension .aspx charge simplement le fichier aspnet_isapi.dll qui effectue la compilation et sert les formulaires Web. La différence entre le mappage de gestionnaire est simplement une méthode permettant aux deux de coexister sur le même serveur, permettant ainsi aux applications MVC et aux applications WebForms de vivre sous une racine commune.

Ceci permet à http://www.mydomain.com/MyMVCApplication d'être valide et servi avec les règles MVC avec http://www.mydomain.com/MyWebFormsApplication valide en tant que formulaire Web standard.

Modifier:
En ce qui concerne la différence entre les technologies, le framework de templates MVC (Razor) est conçu pour renvoyer les pages .Net vers une plate-forme plus "Web" basée sur des vues basées sur des modèles, séparant la logique de code entre le modèle objets de données), la vue (ce que l’utilisateur voit) et les contrôleurs (la connexion entre les deux). Le modèle WebForms (aspx) a été une tentative de Microsoft d’utiliser une incorporation javascript complexe pour simuler une application plus dynamique similaire à une application WinForms avec des événements et un cycle de vie de page capable de conserver son propre état de page en page.

Le choix d'utiliser l'un ou l'autre sera toujours controversé car il existe des arguments pour et contre les deux systèmes. Pour ma part, j'aime la simplicité de l'architecture MVC (bien que le routage soit tout sauf simple) et la facilité d'utilisation de la syntaxe Razor. Je pense que l’architecture WebForms est trop lourde pour être une plate-forme Web efficace. Cela étant dit, dans de nombreux cas, la structure WebForms fournit un modèle très succinct et utilisable avec une structure d'événements riche et bien définie. Tout se résume aux besoins de l'application et aux préférences de ceux qui la construisent.

105
Joel Etherton

Razor est un moteur de visualisation pour ASP.NET MVC, ainsi qu'un moteur de gabarit. Le code rasoir et le code en ligne ASP.NET (code mélangé à du balisage) sont d'abord compilés et transformés en un assemblage temporaire avant d'être exécutés. Ainsi, tout comme C # et VB.NET sont tous deux compilés en IL, ce qui les rend interchangeables. Razor et le code en ligne sont également interchangeables.

C'est donc une question de style et d'intérêt. Je suis plus à l'aise avec rasoir qu'avec le code en ligne ASP.NET, c'est-à-dire que je préfère les pages Razor (cshtml) aux pages .aspx.

Imaginez que vous souhaitiez obtenir une classe Human et la restituer. Dans cshtml fichiers que vous écrivez:

<div>Name is @Model.Name</div>

Dans les fichiers aspx vous écrivez:

<div>Name is <%= Human.Name %></div>

Comme vous pouvez le constater, le signe @ du rasoir facilite beaucoup le mélange de code et de balises.

41
Saeed Neamati

Bien que la syntaxe soit certainement différente entre Razor (.cshtml/.vbhtml) et WebForms (.aspx/.ascx), (Razor étant le plus concis et moderne des deux), personne n'a mentionné que, bien que les deux puissent être utilisés comme moteurs de vue/moteurs de modélisation, les contrôles ASP.NET Web Forms traditionnels peuvent être utilisés sur tous les fichiers .aspx ou .ascx (même en cohésion avec une architecture MVC).

Ceci est pertinent dans les situations où des solutions de longue date à un problème ont été établies et intégrées dans un composant enfichable (par exemple un contrôle de téléchargement de fichiers volumineux) et que vous souhaitez les utiliser dans un site MVC. Avec Razor, vous ne pouvez pas faire cela. Cependant, vous pouvez exécuter le même traitement backend que celui que vous utiliseriez avec une architecture ASP.NET traditionnelle avec une vue Web Form.

De plus, les vues de formulaires Web ASP.NET peuvent avoir des fichiers Code-Behind, ce qui permet d'incorporer la logique dans un fichier séparé qui est compilé avec la vue. Alors que la communauté du développement logiciel s’intéresse de plus en plus aux architectures et au le modèle Smart Client est une mauvaise pratique , c’était jadis le moyen principal de procéder et il est toujours possible avec .aspx /. fichiers ascx. Razor, intentionnellement, n'a pas une telle qualité.

10
smartcaveman

Les fichiers Cshtml sont ceux utilisés par Razor et comme indiqué comme réponse pour cette question , leur principal avantage est qu’ils peuvent être restitués dans des tests unitaires. Les différentes réponses à cet autre sujet apporteront beaucoup d’autres points intéressants.

3
Tim Bourguignon