Rasoir Point De Vue, Sans Mise En Page
Comment se fait lorsque j'ai Layout = null;
à mon avis - il encore tire dans le layout par défaut?!
Est-il une astuce pour arrêter cela?
Voici mon point de vue, sans mise en page:
@{
Layout = "";
}
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
@{Html.RenderAction("Head", "Header");}
</head>
<body>
<div>
Home
</div>
</body>
</html>
Voici le rendu de la sortie!!
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link href="/Content/Site.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script>
</head>
<body>
header
</body>
</html>
</head>
<body>
<div>
Home
</div>
</body>
</html>
- Merci de nous montrer votre code.
- Voyez-vous le mot
null
dans le rendu de la page? - nope voir ci-dessus
- Où en êtes-vous de réglage de la mise en page par défaut?
- Avez-vous un _viewstart.cshtml dans ce répertoire? J'ai eu le même problème que vous rencontrez lorsque j'ai essayé d'utiliser _viewstart. Puis je l'ai renommé _mydefaultview, déplacé à la vue/répertoire partagé, et sont passés à la spécification pas de vue dans cshtml fichiers où je ne veux pas de ça, et en spécifiant _mydefaultview pour le reste. Je ne sais pas pourquoi c'était nécessaire, mais cela a fonctionné.
- merci de le définir comme une réponse et je vais le marquer correcte. ce doit être un bug dans le rasoir sûrement?
- Je ne suis pas sûr si c'est un bug, _viewstarts sont pas destiné à être remplacé, ou si nous avons fait quelque chose de mal. J'aimerais savoir aussi.
- Logique pour déterminer si une Vue doit utiliser une mise en page ou pas ne devrait PAS être dans la mise en page.
Vous devez vous connecter pour publier un commentaire.
Avez-vous un _viewstart.cshtml dans ce répertoire? J'ai eu le même problème que vous rencontrez lorsque j'ai essayé d'utiliser _viewstart. Puis je l'ai renommé _mydefaultview, déplacé à la vue/répertoire partagé, et sont passés à la spécification pas de vue dans cshtml fichiers où je ne veux pas de ça, et en spécifiant _mydefaultview pour le reste. Je ne sais pas pourquoi c'était nécessaire, mais cela a fonctionné.
_ViewStart
doit s'exécuter avant le code de la vue, de sorte que cette question ne devrait pas se produire. Avez-vous quelque chose d'inhabituel à votre _ViewStart?_ViewStart
. Voir ma réponse.Je pense que c' :
n'est pas la même chose que ceci :
- Je utiliser la seconde et de travail, pas de _Viewstart inclus.
Vous (et KMulligan) sont incompréhension
_ViewStart
pages._ViewStart
sera toujours exécuter, avant que votre page de démarrage.Il est destiné à être utilisé pour initialiser les propriétés (telles que
Layout
); il ne devrait pas contenir de balisage. (Puisqu'il n'existe aucun moyen de la contourner).Le modèle correct est de faire une mise en page distincte de la page qui appelle
RenderBody
, et de définir laLayout
propriété pour pointer vers cette page dans_ViewStart
.Vous pouvez ensuite modifier
Layout
dans vos pages de contenu, et les modifications prennent effet._Layout.cshtml
contient tous les modèles de base. et_ViewStart.cshtml
appelle la_Layout.cshtml
. chaque module de mon Application a sa propre page de mise en page, mais ceux de la disposition principale,_Layout.cshtml
. comme le mvc application commence à partir de la viewstart, je suppose que ma seule solution était de commentaire tout à l'intérieur de viewstart. et qui ne cause pas de problèmes supplémentaires parce que les autres pages étaient déjà à l'aide de_Layout.cshtml
. assez simple.Logique pour déterminer si une Vue doit utiliser une mise en page ou pas ne devrait PAS être dans le
_viewStart
ni laView
. Le réglage par défaut dans_viewStart
est très bien, mais l'ajout de toute la logique de présentation dans la vue/viewstart empêche que la vue d'être utilisé n'importe où ailleurs (avec ou sans mise en page).Votre Contrôleur de l'Action doit:
En mettant ce type de logique dans la Vue de vous casser la Principe de responsabilité unique règle en M (données), V (visuel), C (logique).
we could write code within our _ViewStart.cshtml file to programmatically set the Layout property for each View ... we could vary the Layout template that we use depending on what type of device is accessing the site – and have a phone or tablet optimized layout for those devices
Il est clairement la promotion de _viewstart comme un lieu d'utiliser la logique pour changer de présentation (mentionne également les contrôleurs et l'action des filtres). Il est donc plus une question de préférence absolus re: où changer de présentation... may or may not (JSON/XML) not even be Html rendered by a View Engine
n'a aucune incidence. Un _layout est juste un point de vue qui encapsule un point de vue. (Ils ne sont pas tous commencer avec<!DOCTYPE html>
). Il peut donc être tout à fait possible d'avoir _ViewStart de commutation _layouts sur et hors tension en fonction de certains biens c'est à dire le jour de la semaine. Dans un contexte donné, il pourrait se briser, PRS avoir ControllerA pour un ViewA de faire quelques détermination qui _layout page d'injecter ViewA en tant que c'est au-delà de la SRP de la portée. Il n'existe qu'à l'appui de ViewA<>ViewModelA.Je pense que c'est mieux de travailler avec les "points de vue", Im essayant de se déplacer à partir de PHP MVC4, il est vraiment difficile mais je suis sur la bonne voie...
Répondre à votre question, si vous travaillez à des pages individuelles, il suffit d'éditer le _ViewStart.cshtml
Une autre astuce si vous avez quelques problèmes avec le CSS chemin...
Mettre "../" avant de l'url
Ce sont les 2 problèmes que je reçois aujourd'hui, et je le résoudre de cette façon!
Ce qui concerne;
Utilisation:
pour se débarrasser de la mise en page spécifiée dans _ViewStart.
Je voulais afficher la page de login sans la mise en page et cela fonctionne plutôt bien pour moi.(c'est le _ViewStart.cshtml fichier)
Vous devez définir le ViewBag.Titre dans le Contrôleur.
Je sais que c'est un peu tard, mais j'espère que cela aide certains corps.
Il suffit de créer le point de vue qu'une vue partielle de sorte qu'aucun fichier de mise en page est utilisé.
Procédure 1 : présentation des commandes de rendu en utilisant _ViewStart fichier dans le répertoire racine du dossier Vues
Cette méthode est le moyen le plus simple pour les débutants à la présentation des commandes de rendu dans votre ASP.NET application MVC. Nous pouvons identifier le contrôleur et de rendre les Mises en page que par contrôleur, pour ce faire, nous pouvons écrire notre code dans _ViewStart fichier dans le répertoire racine du dossier Vues. Voici un exemple montre comment il peut être fait.
Procédure 2 : Mise en page par Retour de ActionResult
Un la grande caractéristique de ASP.NET MVC est que, nous pouvons remplacer la mise en page par défaut rendu par le retour de la mise en page de la ActionResult. Donc, c'est aussi un moyen de rendre les différentes Mise en page dans votre ASP.NET application MVC. Exemple de code suivant montre comment il peut être fait.
Procédure 3 : Vue - sage de Mise en page (Par la définition de Mise en page à l'intérieur de chaque point de vue sur le haut)
ASP.NET MVC fournit de nous une grande fonctionnalité & faxibility pour remplacer la disposition par défaut rendu par la définition de la mise en page sur la vue. Pour mettre en œuvre ce que nous pouvons écrire notre code dans la manière suivante dans chaque Vue.
Procédure 4 : Placer _ViewStart fichier dans chacun des répertoires
C'est un moyen très utile de définir des Mises en page différentes pour chaque Contrôleur dans votre ASP.NET application MVC. Si nous voulons mettre en Mise en page par défaut pour chacun des répertoires que nous pouvons le faire en mettant _ViewStart fichier dans chacun des répertoires avec les informations de Mise en page comme indiqué ci-dessous: