2010-11-08 12 views
6

Ciao qualcuno sa come passare una lista attraverso i "ViewData". Questo è quello che sto provando ma penso che mi manchi un cast in cui.asp.net mvc. Passare una lista tramite viewData

List<GalleryModel> galleryList = new List<GalleryModel>(); 
     galleryList.Add(new GalleryModel() { isApproved = true, uri = "www.cnn1.com" }); 
     galleryList.Add(new GalleryModel() { isApproved = true, uri = "www.cnn2.com" }); 

     ViewData["SomeList"] = galleryList; 

Ecco il mio codice della pagina aspx:

<% List<myNS.CM.AVDTalentApplication.Models.GalleryModel> galList = ViewData["SomeList"]; %> 
<% foreach (var gal in galList) { %> 
<%= gal.uri%> 
<%} %> 

risposta

12

Per questo riga:

List<myNS.CM.AVDTalentApplication.Models.GalleryModel> galList = ViewData["SomeList"]; 

cambiarlo in

var galList = ViewData["SomeList"] as List<myNS.CM.AVDTalentApplication.Models.GalleryModel>; 
+0

Ha funzionato alla grande. Grazie! Non so perché l'altro tipo di casting non funzioni. – RayLoveless

0

Bisogna lanciare in modo esplicito l'oggetto fuori della collezione Viewdata come tipo è necessario interagire con:

<%@ Import Namespace="myNS.CM.AVDTalentApplication.Models" %> 

<% foreach(var gal in (List<GalleryModel>) ViewData["SomeList"]) %> 
<% { %> 
    <%= gal.uri %> 
<% } %> 
+0

Scusa ... non ha funzionato. – RayLoveless

+0

@Ray L. - Qual è stato l'errore? –

+0

non mi piaceva quel tipo di casting. guarda la risposta – RayLoveless

0

È necessario gettarlo nella vista:

<% var galList = ViewData["SomeList"] as List<myNS.CM.AVDTalentApplication.Models.GalleryModel>; %> 

o

<% var galList = (List<myNS.CM.AVDTalentApplication.Models.GalleryModel>) ViewData["SomeList"]; %> 
+0

seconda opzione non funziona – RayLoveless

0

Anche se tutte le risposte di cui sopra sono corretti, vi consiglierei vivamente di fare uso di view models.

+1

oh sparare, questo era inteso come un commento –

Problemi correlati