2010-11-08 83 views
6

Hi có ai biết cách chuyển danh sách thông qua "ViewData" hay không. Đây là những gì tôi đang cố gắng nhưng tôi nghĩ rằng tôi đang thiếu một diễn viên một số nơi.asp.net mvc. Chuyển danh sách qua 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; 

đây là mã trang aspx của tôi:

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

Trả lời

12

Đối với điều này line:

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

thay đổi nó để

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

Đã làm việc tuyệt vời. Cảm ơn! Tôi không biết tại sao loại đúc khác không hoạt động. – RayLoveless

0

Bạn phải đúc một cách rõ ràng đối tượng ra khỏi bộ sưu tập ViewData như kiểu bạn cần phải tương tác với:

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

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

Rất tiếc ... không hoạt động. – RayLoveless

+0

@Ray L. - Lỗi là gì? –

+0

nó không thích kiểu đúc đó. xem câu trả lời. – RayLoveless

0

Bạn cần phải cast nó trong giao diện:

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

hoặc

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

tùy chọn thứ hai không hoạt động – RayLoveless

0

Mặc dù tất cả các câu trả lời ở trên là chính xác, tôi sẽ đề nghị việc sử dụng của view models.

+1

oh shoot, điều này có nghĩa là một nhận xét –

Các vấn đề liên quan