http://blog.bitdiff.com/2012/05/shaing-common-view-model-data-in.html a>
qui a résolu partiellement mon problème, mais même ceux-ci ne lient pas leur _layout.cshtml avec un @model, autant que je sache, je dois spécifier un modèle sur chaque vue si je veux accéder au SharedContext, veuillez corriger si je suis faux p>
Ce que je voulais faire est de déclarer un "@model nomspace.mymodel" sur _layout.cshtml de sorte qu'il pourrait récupérer ses informations par lui-même, au lieu d'avoir à mettre en place un modèle pour chaque vue héroportation à partir de layoutmodel p>
* J'espère que je suis clair, fondamentalement, je voulais savoir comment puis-je déclarer @model tag sur un _layout.cshtml afin qu'il puisse accéder à son propre modèle p>
Avec la solution que j'ai liée avant (même si ce n'est pas lié à ma question) je dois faire:
@ ((((Basecontroller) ViewContext.Controller) .Context.Property) Pour obtenir les informations partagées, et si je pouvais simplement déclarer (et utiliser) un @model à la place, je pourrais accomplir la même chose en faisant quelque chose comme: @model. Propriété * P>
Comme vous pouvez le constater, je joue en train d'essayer de migrer tout ce que je connais déjà de Webforms à MVC et c'est assez difficile pour moi, car je dois adopter certaines pratiques complètement différentes de ce que je suis habitué à p>
Merci d'avance p>
Pourquoi votre _Layout a-t-il besoin d'un modèle?
C'est parce que je voulais accéder aux informations "partagées" (session), plus spécifiquement, j'ai une expérience aléatoire générée sur chaque nouvelle session Web et l'URL est utilisée sur _Layout.cshtml
D'accord, avoir un modèle dans _Layout n'est pas une bonne idée, vous pouvez utiliser le point de vie pour cela - consultez cette réponse Stackoverflow.com/questions/6267727/...
C'est exactement ce que je voulais éviter (le point de vue), je pensais qu'il serait possible d'avoir une frappe forte sur ma mise en page au lieu de s'appuyer sur le point de vue pour éviter de petites choses comme Mispinging une propriété, je voulais compiler sur le compilateur
_Layout est une partielle utilisée par tous vos points de vue. Spécification d'un modèle Il ya ajouter une restriction à chaque vue sur votre site pour avoir également ce modèle.
Comme alternative à
ViewBag code> Vous pouvez également utiliser une action enfant.
@leandrokoiti - Vous évitez une "mauvaise pratique" (typage dynamique du point de vie), mais essayant de la remplacer par une autre mauvaise pratique (attacher votre mise en page aux données du modèle). Les mises en page ne doivent pas compter sur les données ...
@James mais ne serait pas correct dans ce cas avoir un modèle attaché à une vue qui utilise la mise en page? Depuis chaque utilisation de _Layout et ils auraient donc besoin de cette propriété aussi?
@Jasen Vous voulez dire dans ce cas, je devrais essayer de créer une action d'enfant pour rendre le style contenant le fond de l'arrière-plan au lieu d'essayer de "attacher" mon _Layout à un modèle?
@leanDrokoiti pouvez-vous donner un exemple de quelles informations à afficher dans votre _Layout?
@Ekoostikmartin Vous avez raison, je n'ai pas cessé de penser de cette façon, je vais essayer ce que Jhoon Bey a posté et voyez comment l'action pour enfants fonctionnerait comme Jasen commenté, merci beaucoup!
@James fondamentalement, j'ai une image de fond aléatoire à montrer à chaque fois qu'une nouvelle session Web est créée (l'URL d'image persiste via une session Web, mais chaque fois qu'une nouvelle session Web est créée une autre URL est générée), ce fond est Situé sur la
du fichier _layoutJe crois que la suggestion que Jasen m'a donné bien fonctionné, si je l'ai bien compris, j'ai créé une action enfant qui rend tout simplement ce