C# MVC3 ViewBag,如​​何在 foreach 语句中的 View 中使用列表属性?

标签 c# .net asp.net-mvc asp.net-mvc-3

public class RegisterSubscription
{
        public string ID { get; set; }
        public string Description { get; set; }
        public int SubscrSelected { get; set; }
        public string Image { get; set; }
        public string InfoUrl { get; set; }
}

private List<RegisterSubscription> activePlans = new List<RegisterSubscription>();

在我的 Controller 中,我有 ViewBag.ActivePlans = activePlans; 并且 ViewBag 填充了正确的数据。现在在我看来我有:

@foreach (var item in ViewBag.ActivePlans)
{
    <li class="popupmenu" id="service_@(item.ID)" >
    <div>
    @Html.Image(item.Image, new { style="border-style:none; text-align:left; vertical-align:middle; width:64px; height:64px" })
    </div>
    </li>
}

但我收到以下错误: “System.Web.Mvc.HtmlHelper”没有名为“Image”的适用方法,但似乎有一个名为“Image”的扩展方法。不能动态调度扩展方法。考虑在没有扩展方法语法的情况下转换动态参数或调用扩展方法。

任何帮助将不胜感激, 提前谢谢你。

最佳答案

警告:我没有做过任何 MVC 的东西,所以这是猜测。

我的猜测是 ActivePlans 在某种形式上是动态的...所以您基本上需要使 item 成为强类型的。它可能就像这样简单:

@foreach (RegisterSubscription item in ViewBag.ActivePlans)

... 这基本上会将每个项目转换到 RegisterSubscription,因为它从 ViewBag 中获取它。在那之后,我看不到你有任何动态,所以扩展方法应该没问题。我认为。或许。当风合适的时候。

关于C# MVC3 ViewBag,如​​何在 foreach 语句中的 View 中使用列表属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4656834/

相关文章:

c# - 重用 MVC Controller 角色授权以显示菜单项

c# - 如何在 Web 服务中获取客户端发送的 X509Certificate?

c# - 阻塞的线程占用了哪些资源

c# - ASP.NET MVC - 关于路由中的约束

c# - 功能 'interpolated strings' 在 C# 5 中不可用。请使用语言版本 6 或更高版本

c# - 使用单个书签将文本添加到word中的多行

.net - 当我的 .net 程序集不再位于同一位置时,如何取消注册?

.net - 如何使用 Entity Framework 4.1 Fluent API 映射枚举?

asp.net-mvc - 在 Asp.Net MVC 应用程序中调用 UnitOfWork.Commit() 的位置

asp.net-mvc - ADFS 单一注销在 Internet Explorer 10 中不起作用