2010-05-05 14 views
9

Ho una vista che è non fortemente digitato. Tuttavia ho in questa vista una vista parziale che è fortemente tipizzata.Come passare il modello da una vista ad una vista parziale?

Come faccio a passare il modello a questa vista fortemente tipizzata?

ho provato qualcosa di simile

public ActionResult Test() 
     { 
       MyData = new Data(); 
       MyData.One = 1; 
       return View("Test",MyData) 
     } 

Nel mio TestView

<% Html.RenderPartial("PartialView",Model); %> 

Questo mi dà un'eccezione StackOverflow. Quindi non sono sicuro di come farlo passare. Ovviamente non voglio rendere la vista test fortemente scritta, se possibile, come accade se avessi come 10 viste parziali fortemente tipizzate in quella vista, avrei bisogno di una specie di wrapper.

+0

losely digitato tu abbia ragione su l'involucro, e non è un brutto modo di andare – hunter

risposta

4

È necessario estendere il modello in modo che possa fornire tutti i campi necessari per la vista (questo è denominato ViewModel) oppure fornire separatamente ViewData.

public ActionResult Test() 
     { 
       MyData = new Data(); 
       MyData.One = 1; 
       ViewData["someData"]=MyData; 
       return View(); 
     } 

poi:

<% Html.RenderPartial("PartialView",ViewData["someData"]); %> 

Viewdata è un bel dizionario

+0

Quindi dovrei lanciarlo nella parzializzazione giusta? – chobo2

+1

Che cosa intendi? Se la tua vista parziale è fortemente tipizzata con la classe MyData, la riga sopra renderà la tua vista senza problemi. Come puoi vedere, puoi inviare più di un modello alla tua vista da ViewData perché non è fortemente digitato, quindi estrai i tuoi modelli per ogni PartialView fortemente tipizzato. –

+0

Ho provato questo, ma non funziona per me, quindi ho provato @ Html.Partial e ho trovato che funziona per me. Non so perché sia ​​così. – lawphotog

0

Inserire l'oggetto richiesto dal partial in Viewdata e utilizzare ist nella vista come input per il partial.

public ActionResult Test() 
     { 
       ViewData["DataForPartial"] = new PartialDataObject(); 
       return View("Test") 
     } 

Nell'uso vista:

<% Html.RenderPartial("PartialView",ViewData["DataForPartial"]); %> 

Ma comunque: Non c'è ragione alcuna di avere una visione stronly digitato.

+0

Il problema non è che sia il visualizzare una vista fortemente tipizzata è il fatto che se si dispone di più di una vista parziale in quella vista non è possibile renderla una vista fortemente tipizzata per adattarsi a tutti quei casi a meno che non si faccia una specie di wrapper o suppongo di utilizzare ViewData. – chobo2

Problemi correlati