Comment spécifier layoutpage par défaut dans Razor in ASP.NET MVC 3 Preview 1?

je tiens à préciser (dans un lieu), une mise en page par défaut de la page de Rasoir, afin que je puisse supprimer ceci:

@{ LayoutPage = "~/Views/Shared/_Layout.cshtml"; }

à partir de tous .cshtml fichier que j'ai. Mais je ne sais pas comment... Des idées? J'utilise le moteur Razor de ASP.NET MVC 3 Preview 1.

25
demandé sur bzlm 2010-08-24 18:26:53
la source

3 ответов

il n'y a pas de façon facile de faire cela dans MVC 3 Preview 1. Il s'agit d'une limitation des bits de prévisualisation qui seront abordés dans les prochaines versions. Malheureusement _init.cshtml les fichiers ne fonctionnent pas dans cet aperçu de MVC3 donc vous ne pouvez pas suivre le modèle des Pages web.

Il y a 2 façons que je peux penser à le faire fonctionner (bien que ni est optimale)

  1. écrivez votre propre classe de base de page qui dérive de WebViewPage et définit la bonne mise en page dans le constructeur... mais dans ce cas, vous devez spécifier un @inherits la directive dans chaque vue.
  2. paramétrez le layout override dans votre méthode d'action (en utilisant le View(string viewName, string masterName) remplacer). Vous pourriez écrire une classe de base de controller intermédiaire qui aurait une méthode helper pour vous épargner la peine de répéter la disposition partout.
0
répondu marcind 2010-08-24 22:16:09
la source

créer un " ~ / Views / _ViewStart.cshtml" la page et la suivante à l'intérieur:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

notez que vous pouvez écrire du code ici, il est donc possible de modifier votre mise en page en fonction du type d'appareil visé, etc.

ceci est maintenant créé par défaut dans un projet MVC3 vide.

Source

68
répondu miguelv 2011-02-11 22:40:36
la source

il semble que la façon de faire ceci est d'utiliser un _init.CSHTML fichier dans la racine du répertoire de vue dans lequel vous souhaitez un élément de page commune (en-tête). Lorsque le moteur de vue de rasoir construit votre page, il Recherche quelques fichiers spécifiques automatiquement appelés _start.cshtml, _init.cshtml, et _end.cshtml; ces fichiers sont chargés dans leur ordre respectif par le moteur de vue pour chaque requête. Placer la définition de LayoutPage, et/ou d'autres opérations communes d'initialisation dans ces fichiers garantira ils sont courus pour toutes les pages.

Note: Je ne suis pas sûr que l'effet soit transmis dans des sous-répertoires car ce n'était pas clair dans la documentation; vous devrez essayer de le découvrir.

Il ya un peu plus d'informations détaillées sur la façon de faire cela trouvé dans le Microsoft how-to book sur la construction de pages avec Razor. J'ai trouvé la section lancer le Code avant et après les fichiers dans un dossier à la page 169. Cochez cette page de téléchargement Microsoft pour le livre complet ainsi que des échantillons supplémentaires de rasoir.

2
répondu Nathan Taylor 2010-08-24 18:42:56
la source

Autres questions sur