Html.RenderPartial appel de masterpage
Voici un scénario: disons que j'ai site avec deux contrôleurs responsables pour afficher les différents type de contenu - les Pages et les Articles. J'ai besoin d'incorporer Vue Partielle dans ma masterpage qui liste les pages et les articles filtrés à certains critères et être affichés sur chaque page. Je ne peux pas mettre le Modèle sur ma masterpage (suis-je le droit?). Comment puis-je résoudre cette tâche à l'aide Html.RenderPartial?
[MODIFIER]
Oui, je serais probablement créer des vues partielles pour la liste des articles et des pages, mais quand même, il y a une barrière que je ne peut pas et ne doit pas définir de modèle sur la masterpage. J'ai besoin d'une certaine manière de dire "voici les pages" comme un argument de mon renderpartial, et aussi pour les articles. Tout le concept de renderpartial avec les données de la base de données dans les masterpages est un peu floue pour moi.
OriginalL'auteur Dragan Panjkov | 2008-09-07
Vous devez vous connecter pour publier un commentaire.
Comment sur la création d'un HtmlHelper méthode d'extension qui vous permet d'appeler une vue partielle résultat sur une action sur le contrôleur.
Quelque chose comme
vous pouvez ensuite l'utiliser dans votre page maître comme
et dans votre contrôleur de la méthode appropriée
Bien c'est mes 2 cents de toute façon
OriginalL'auteur user113588
J'ai eu un poste similaire et est venu avec un modèle d'objet à manipuler.
Je DÉTESTE le non-fortement typé vues s'en est allé avec cette approche et qu'elle fonctionne bien.
OriginalL'auteur Simon_Weaver
Je pense que votre solution peut résider dans le pays de la MVC 2.0 RC et au-delà...
Phil Haack a publié un article sur son blog: http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx
OriginalL'auteur Brett Rigby
La ViewData Modèle de propriété doit être utilisé uniquement pour le contenu que vous êtes en train de visualiser/éditer dans la section principale de l'INTERFACE utilisateur.
D'autres parties de la vue peut avoir besoin de certaines données présentes dans ViewData, donc il suffit de les ajouter à l'aide du dictionnaire.
Je venais tout juste de transmettre les données du dictionnaire comme ceci: ViewData["articles"] pour le partiel. (ou ViewData.Get() de MvcContrib).
Vous pouvez également regarder à la mise en œuvre récemment SubController modèle mis en œuvre dans MvcContrib.
OriginalL'auteur Ben Scheirman
oui, c'est exact. mais regardons ce scénario:
sur les vues qui sont liées à des articles, j'aurais ViewData["article"], et sur les points de vue liés à des pages, j'ai ViewData["page"], mais je n'ai pas tant d'articles et de pages disponibles tous les temps. Donc, si j'ajoute:
Html.RenderPartial("articlesView", ViewData["articles"])
Html.RenderPartial("pagesView", ViewData["page"])
à ma masterpage, je vais avoir une exception levée sur chaque page sur laquelle ViewDataDictionary ne pas contenir à la fois des articles et des pages.
Au moins, c'est comment je le vois.
OriginalL'auteur Dragan Panjkov
La façon dont je le manipuler est d'utiliser un BaseViewModel. Tous les points de Vue sont fortement typés à l'encontre d'un modèle de vue qui hérite de BaseViewModel.
La BaseViewModel classe contient toutes les informations nécessaires pour la MasterPage. Donc pour la navigation de votre BaseViewModel peut ressembler à ceci:
Dans votre MasterPage et PartialViews, vous pouvez lancer le Modèle de BaseViewModel et l'accès à la NavigationsItems propriété.
OriginalL'auteur Jeremy
C'est un très retard de réponse, mais je suis arrivé à cette page alors que googler - si les chances sont quelqu'un d'autre va le voir, cette question (et ma réponse).
La manière dont j'ai travaillé autour de ce problème est à l'aide d'un simple script jQuery pour charger un PartialView et exécuter du code du contrôleur. L'échantillon ci-dessous.
Le grand inconvénient de cette approche est que le client a des scripts pour qu'il fonctionne (donc, c'est vraiment SEO hostile). Si c'est quelque chose que vous pouvez vivre avec, il fonctionne bien. Je ne l'utiliser que sur un site intranet où je sais que chaque client a activé JavaScript et je n'ai pas à vous soucier de google de robots.
OriginalL'auteur Ciddan