La transmission des Données à une Page de Mise en Page
J'ai un layout
page qui contient les variables qui doivent être remplis. Exemple:
@ModelType KarateAqua.schoolModel
<html>
<body>
@RenderBody()
<div id="footer">
<div class="content">
<div class="bottom_logo">
<a href="/"><span class="inv">@Model.schoolName</span></a>
</div>
</div>
</div>
</body>
</html>
Je ne veux pas remplir ce dans tous les ActionResult
. Est-il un moyen de transmettre des données à un layout
page une fois et de le faire pour tous les cas?
- La meilleure réponse est: stackoverflow.com/questions/13225315/...
Vous devez vous connecter pour publier un commentaire.
OK, puisque vous voulez que ce soit réglé une fois, vous pouvez utiliser une vue partielle. Toutefois, en fonction de vos besoins, vous aurez besoin d'avoir plusieurs vues partielles (peut-être pas idéal si des sections vont être dispersés à travers le _layout page)
votre vue partielle ressemblera
Contrôleur
dans votre _layout.cshtml placez cette ligne où vous voulez avoir la vue partielle pour être inséré
Créer une action de filtre et de décorer votre contrôleur de classes. L'intérieur de l'action de filtre, vous avez accès à placer les valeurs dans le viewbag qui sont disponibles à votre disposition.
Ce sera exécuté sur chaque demande et vous n'aurez pas à changer la valeur de chaque action. Vous pouvez chercher et ignorer les choses comme un enfant demande et les requêtes ajax qui, généralement, ne pas utiliser la mise en page de toute façon et de ne pas configurer votre viewbag des valeurs pour ces.
Ci-dessous est un exemple d'un attribut que j'ai créé pour copier un objet à partir de la session et de le rendre disponible pour la mise en page via le ViewBag
Vous pouvez ouvrir un bloc de code sur la page de mise en page et de remplir l'objet. Ce sera exécutée à chaque fois la mise en page est utilisé. L'avantage est que vous n'avez pas à modifier quoi que ce soit sur votre contrôleur:
Vous pouvez utiliser
ViewBag
ouViewData
pour transmettre des données à votre Mise en pages.Disposition
Contrôleur
De Votre Mise En Page:
Votre Contrôleur HomeController:
Votre BaseController
La logique est simple: Vous créez BaseController qui inclut tous les paramètres globaux vous allez utiliser dans la mise en page. (Comme le nom d'utilisateur ou d'autres données en fonction des paramètres)
Vous héritez (appel)
BaseController
pour obtenir tous les paramètres dans votre contrôleur.Vous pouvez toujours créer des actions qui retourne une vue partielle de votre en-tête.
Juste ajouter ceci à votre
layout
page:J'ai utilisé
HTTP Session
de persister les données entre les différentes pages -Dans la
_layout
page;Espère que cette aide, mais il ne fonctionnera pas si vous démarrez à partir d'une page différente de celle par défaut qui a été défini.