2010-11-08 4 views
6

Salut, quelqu'un sait comment passer une liste à travers le "ViewData". C'est ce que j'essaie mais je pense qu'il me manque un casting où.asp.net mvc. Passer une liste via 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; 

voici mon code page ASPX:

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

Répondre

12

Pour cette ligne:

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

changer à

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

A travaillé super. Merci! Je ne sais pas pourquoi l'autre type de casting ne fonctionne pas. – RayLoveless

0

Vous devez explicitement jeter l'objet de la collection ViewData comme le type que vous devez interagir avec:

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

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

Désolé ... n'a pas fonctionné. – RayLoveless

+0

@Ray L. - Quelle était l'erreur? –

+0

il n'a pas aimé ce type de coulée. voir la réponse. – RayLoveless

0

Vous devez jeter dans la vue:

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

ou

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

deuxième option ne fonctionne pas – RayLoveless

0

Même si toutes les réponses ci-dessus sont correctes, je suggère fortement en utilisant de view models.

+1

oh tirer, cela a été conçu comme un commentaire –

Questions connexes