Domanda

Ho un progetto ASP.NET WebForms / MVC ibrido. Nella mia pagina master, ho un utente "menu" di controllo e un "piè di pagina" controllo utente. In ogni modo. Ho bisogno di passare alcuni dati (2 stringhe) al mio "menu" di controllo utente sulla mia pagina master (per selezionare la scheda corrente nel mio menu di navigazione, ecc) Le mie opinioni sono fortemente tipizzato al mio modello di dati. Come posso spingere i dati dal mio controller per il mio menu o almeno consentire mia pagina master per l'accesso alcuni dati predefiniti nel mio controller?

Nota: ho capito questo viola puro ASP.NET MVC, ma come ho detto, si tratta di un progetto di ibrido. Lo scopo principale della mia introduzione ad ASP.NET MVC nel mio progetto era quello di avere più controllo sulla mia interfaccia utente per certe situazioni solo.

È stato utile?

Soluzione

Mettere le stringhe nella collezione Viewdata,

ViewData["MenuString1"] = "My First String";
ViewData["MenuString2"] = "My Second String";

e recuperarli nella pagina master in questo modo:

myMenu.Property1 = ViewData["MenuString1"].ToString();
myMenu.Property2 = ViewData["MenuString2"].ToString();

http://nerddinnerbook.s3.amazonaws.com/Part6.htm

Altri suggerimenti

È possibile utilizzare Viewdata per condividere i dati tra il controllore e Vista che non è nel modello. Nel Controller, fare qualcosa di simile ViewData["menu"] = myMenu; e poi in vista do <%= ViewData["menu"] %>. È possibile passare oggetti, ma è necessario lanciare sul retro Viewdata [] per il tipo di oggetto in vista.

Un altro modo per farlo è quello di mettere i menu e altri bisogni dati correlati non-Girl in un controller separato. Quindi è possibile utilizzare RenderAction per chiamare l'azione nel controller di navigazione che genera il menu. Hack ha postato sul blog il RenderAction che spiega più in dettaglio.

Mi chino verso l'utilizzo Viewdata per i valori temporanei dal controllore come elenchi di selezione e di un RenderAction per le cose non correlate, come il principale navigazione del sito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top