Pourquoi Razor _layout.cshtml a-t-il un trait de soulignement de premier plan dans le nom du fichier?

Dans le projet ASP.NET MVC 3 par défaut, la mise en page et les fichiers cshtml partiels commencent par un trait de soulignement

  • _viewstart
  • _Layout
  • _LogOnPartial

Que signifie cette convention et à quoi sert-elle? Dois-je suivre cette convention?

Le framework donne-t-il une signification particulière à un fichier .cshtml qui commence par un trait de soulignement?

Razor a été développé pour les pages Web ASP.NET (WebMasortingx), qui ne disposent pas du même type de protection que les dossiers Views et Routing que vous obtenez dans MVC. Étant donné que les pages de mise en page dans les pages Web ne sont pas destinées à être diffusées directement, elles sont précédées du trait de soulignement. Et l’infrastructure de pages Web a été configurée pour ne pas autoriser la demande directe de fichiers avec des traits de soulignement principaux dans leurs noms. Les autres fichiers .cshtml des pages Web doivent généralement être accessibles. Ils sont l’équivalent des fichiers .asp ou .php.

L’équipe ASP.NET a déclaré que les pages Web constituent un sharepoint départ dans le développement d’ASP.NET, ce qui devrait conduire à une migration vers MVC dans le temps (pour ceux qui souhaitent passer à autre chose). Cela signifie en partie que la migration des pages Web vers MVC devrait être aussi simple que possible. Par conséquent, il est logique de transférer les conventions de nommage établies dans les pages Web vers les fichiers MVC Razor.

Il y a donc une raison technique pour préfixer les noms de fichiers avec un trait de soulignement – cela ne concerne tout simplement pas MVC.

C’est comme ça que Ruby on Rails le fait (les Partials commencent par un _ mais l’appel partiel Render n’inclut pas le _), et ASP.net MVC s’en est beaucoup inspiré.

Aucune raison technique, juste une convention pour montrer clairement l’intention des autres développeurs (et vous-même 6 mois plus tard) à dire: «Ceci est une vue partielle.

Les pages qui ne peuvent pas être affichées par les requêtes directes de votre navigateur (pages maîtres, vues partielles, etc.) ont un trait de soulignement (_) au début de leurs noms.

Donc, si vous essayez de faire la demande à _Layout.cshtml (ceci est la page maître), vous obtiendrez une erreur du serveur.

C’est un moyen de distinguer les fichiers qui ne peuvent pas être parcourus comme des pages autonomes, dans le moteur de vue Razor.

Pensez-y de cette façon … dans MVC 2 … vous différencieriez la vue partielle et le fichier maître avec le suffixe .master, .ascx, et les pages normales au format .aspx, dans la vue Razor … toutes les vues sont en .cshtml, donc pour distinguer les pages partielles et les pages maîtres, elles auront un préfixe (_). son rien obligatoire, juste une “convention”.

Pour autant que je sache, il s’agit simplement d’une convention utilisée pour identifier l’intention du fichier; Je ne crois pas que cela va réellement changer le comportement du fichier. Dans la plupart des contextes de développement, append un trait de soulignement au préfixe identifie quelque chose à utiliser pour une utilisation “privée”, que ce soit par une classe ou, dans ce cas, par un autre modèle.

Je n’utilise pas MVC, mais avec les pages Web qui utilisent également la syntaxe du razor, le préfixe _ indique généralement que la page n’est pas destinée à être accédée par un utilisateur mais par d’autres pages ou du code. Si vous essayez d’accéder à une page contenant le préfixe, asp.net l’empêcherait d’y accéder. C’est pourquoi il est utilisé avec des pages de mise en page et d’autres pages de ce type, car elles ne doivent pas être accessibles directement par un utilisateur.

Quelque chose comme le dossier App_Code dans asp.net