2010-11-08 14 views
6

Hola, ¿alguien sabe cómo pasar una lista a través de "ViewData". Esto es lo que estoy intentando, pero creo que me falta un molde en algún lado.asp.net mvc. Pasar una lista a través de 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; 

aquí es mi código de la página aspx:

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

Respuesta

12

Por esta línea:

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

cambiarlo a

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

Funcionó bien. ¡Gracias! No sé por qué el otro tipo de casting no funciona. – RayLoveless

0

Tienes que convierta explícitamente el objeto de la colección ViewData como el tipo que necesita para interactuar con:

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

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

Lo siento ... no funcionó. – RayLoveless

+0

@Ray L. - ¿Cuál fue el error? –

+0

no me gustó ese tipo de casting. ver la respuesta – RayLoveless

0

Es necesario para su emisión en la vista:

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

o

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

segunda opción no funciona – RayLoveless

0

A pesar de que todas las respuestas anteriores son correctas, sugeriría fuertemente haciendo uso de view models.

+1

oh disparar, esto fue pensado como un comentario –

Cuestiones relacionadas