ASP.NET MVC. 通过 ViewData 传递列表

12

大家好,有人知道如何通过“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;

这是我的aspx页面代码:

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

18

对于这行代码:

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

将它改为

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

工作得很好。谢谢!我不知道为什么另一种类型的转换不起作用。 - RayLoveless

2
您需要在视图中进行转换:
<% var galList = ViewData["SomeList"] as List<myNS.CM.AVDTalentApplication.Models.GalleryModel>;  %>

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

0

你必须显式地将对象从ViewData集合中转换为你需要交互的类型:

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

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

它不喜欢那种类型的转换。请查看答案。 - RayLoveless

0

尽管以上所有回答都是正确的,但我强烈建议利用视图模型


1
哦,糟糕,这应该是一条注释。 - stoic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接