【问题标题】:C# MVC3 ViewBag, how to use lists property in view within foreach statement?C# MVC3 ViewBag,如​​何在 foreach 语句中使用列表属性?
【发布时间】:2011-01-11 10:54:59
【问题描述】:
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>();

在我的控制器中,我有 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”的适用方法,但似乎具有该名称的扩展方法。扩展方法不能动态调度。考虑强制转换动态参数或调用扩展方法而不使用扩展方法语法。

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

【问题讨论】:

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


    【解决方案1】:

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

    我的猜测是 ActivePlans 在某种形式下是动态的......所以你基本上需要使 item 强类型。 可能就这么简单:

    @foreach (RegisterSubscription item in ViewBag.ActivePlans)
    

    ...这基本上会将每个项目转换为RegisterSubscription,因为它会将其从ViewBag 中取出。在那之后,我看不到你有什么动态的,所以扩展方法应该没问题。我认为。也许。风顺时。

    【讨论】:

    • @Jon Skeet - 如果我使用匿名类型怎么办。前任。 ViewBag.ActivePlans = new { Prop = "Value" }? How could I access ActivePlans.Prop` 从视图中无法投射对象?有可能吗?
    • @one.beat.consumer:说实话,我不知道。
    • @JonSkeet 感谢您的快速回复。我的猜测是我不能。我继续制作了一个快速视图模型,但试图避免这种情况
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2015-07-11
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 2017-01-26
    相关资源
    最近更新 更多