web-dev-qa-db-fra.com

Razor / CSHTML - Un avantage sur ce que nous avons?

Quiconque utilise la nouvelle fonctionnalité de pages CSHTML et découvre qu'il préfère cette nouvelle syntaxe de moteur de vue par rapport au moteur de vue par défaut ASP.NET MVC existant ou aux formulaires Web, et si oui, pourquoi? Qu'en est-il de CSHTML vous donne un avantage sur MVC ou les formulaires Web, ou vice versa?

Juste curieux d'entendre les gens prendre sur elle.

75
Brian Mains

L'un des avantages est que les vues Razor peuvent être rendues dans des tests unitaires, ce qui n'était pas facilement possible avec le précédent moteur de rendu ASP.Net.

De annonce de ScottG , ceci est répertorié comme l'un des objectifs de conception:

Unité testable: La nouvelle implémentation du moteur de visualisation prendra en charge la possibilité de tester les vues à l'unité (sans nécessiter de contrôleur ni de serveur Web, et peut être hébergée dans n'importe quel serveur). projet de test unitaire - aucun domaine d'application particulier requis).

44
Simon Steele

Opinion des développeurs Microsoft

J'ai travaillé sur une équipe de base pour le site Web MSDN. Maintenant, j'utilise c # razor pour les sites de commerce électronique avec mon équipe de programmation et nous nous concentrons beaucoup sur l'interface frontale jQuery avec les pages d'arrière-plan c # razor et la base de données de mémoire LINQ-Entity. et pas de mise en cache de page. Nous n'utilisons pas MVC, mais simplement ASP.NET avec des pages de rasoir mappées avec le module URL Rewrite pour IIS 7, pas de pages ASPX ni de programmation d'événement ViewState ou côté serveur. Elle ne N'imposez pas les couches supplémentaires (inutiles) que MVC place dans les constructions de code pour l'expression rationnelle. Moins, c'est plus pour nous. C'est tout maigre et méchant, mais je donne à MVC le support nécessaire pour sa testabilité, mais c'est tout.

Les pages Razor n'ont pas de cycle de vie d'événement comme les pages ASPX. Son rendu juste comme une page demandée. C # est un super langage et Razor se débrouille pour le laisser faire son travail. La saisie anonyme avec génériques et linq vous simplifie la vie avec les pages c # et rasoir. L'utilisation des pages Razor vous aidera à penser et à coder plus clair.

L'un des inconvénients de Razor et de MVC est qu'il n'y a pas de persistance semblable à ViewState. J'avais besoin d'implémenter une solution pour cela alors j'ai fini par écrire un plugin jQuery pour cela ici -> http://www.jasonsebring.com/dumbFormState qui est un plugin HTML 5 supporté par le stockage hors connexion pour le formulaire état qui fonctionne dans tous les principaux navigateurs maintenant. C’est juste pour l’état du formulaire actuellement, mais vous pouvez utiliser window.sessionStorage ou window.localStorage très simplement pour stocker tout type d’état dans des publications ou des demandes de page, je me suis simplement donné la peine de le sauvegarder automatiquement et de l’espacer en fonction de l’URL et de vous n'avez pas à y penser.

44
Jason Sebring
  1. Tout est encodé par défaut !!! C'est assez énorme.

  2. Les aides déclaratives peuvent être compilées afin que vous n'ayez rien à faire de spécial pour les partager. Je pense qu'ils vont remplacer les contrôles .ascx dans une certaine mesure. Vous devez sauter quelques étapes pour utiliser un contrôle .ascx dans un autre projet.

  3. Vous pouvez faire une section requise qui est Nice.

7
Kyle Nunery

Le principal avantage est que le code est plus succinct. L'éditeur VS disposera également du support IntelliSense, contrairement à certains autres moteurs de vue.

Les assistants HTML déclaratifs ont également l’air plutôt sympas, car leur utilisation dans le code C # me rappelle les contrôles personnalisés dans ASP.NET. Je pense qu'ils ont pris une page de partiels mais avec le code en ligne.

Il y a donc des avantages certains par rapport au moteur de visualisation asp.net.

Contrairement à un moteur de vue tel que spark si:

Spark est encore plus succinct, vous pouvez conserver le if et les boucles dans une balise HTML elle-même. Le balisage me semble toujours plus naturel.

Vous pouvez coder les partiels exactement comme vous le feriez avec un assistant déclaratif, il vous suffirait de transmettre les variables au partiel et vous obtiendrez la même chose. Cela fait longtemps que spark).

3
rball