asp.net mvc。通过viewData传递列表

问题描述 投票:8回答:4

嗨,有没有人知道如何通过“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%>
<%} %>
asp.net-mvc list viewdata
4个回答
14
投票

对于这一行:

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

改为

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

0
投票

您必须将对象显式地转换为ViewData集合,作为您需要与之交互的类型:

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

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

0
投票

您需要在视图中强制转换它:

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

要么

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

0
投票

即使以上所有答案都是正确的,我强烈建议使用view models

© www.soinside.com 2019 - 2024. All rights reserved.