获取错误 foreach 语句无法对“xyz”类型的变量进行操作,因为“xyz”不包含“GetEnumerator”的公共定义

问题描述

我已经创建了一个基于 EpiServer LinkItemCollection 的模型:

namespace ProjectX.Site.Models.Blocks
{
    [SiteContentType(
        GUID = "b9978bf2-f3da-4164-8fa2-3694c2ce0377",AvailableInEditMode = false)]
    [SiteImageUrl]
    public class CustomTopNavigationItemtBlock : SiteBlockData
    {

        [CultureSpecific]
        [MinItemCount(0)]
        [MaxItemCount(2)]
        [display(Order = 10)]
        public virtual LinkItemCollection CustomTopNavigationLinks { get; set; }

        public override int WordCount
        {
            get => throw new System.NotImplementedException();
            set => throw new System.NotImplementedException();
        }
    }
}

我正在尝试为它创建一个共享视图:

@model CustomTopNavigationItemtBlock

@if (Model != null)
{
    @foreach (var linkItem in Model)
    {
        <li>
            <a class=""
               href="@Url.PageUrl(linkItem.Href)"
               target="@linkItem.Target"
               title="@linkItem.Title"
               tabindex="1"
               data-toggle=""
               role="button">
                @linkItem.Text
            </a>
        </li>
    }
}

不幸的是,我不明白我做错了什么。

解决方法

在这里,您正在尝试迭代 Model

foreach (var linkItem in Model)

然而,Model 属于 CustomTopNavigationItemtBlock 类型,不能使用 foreach 进行迭代,因为它没有实现 IEnumerable

您似乎正在尝试遍历 CustomTopNavigationLinks 属性,可以这样做:

foreach (var linkItem in Model.CustomTopNavigationLinks)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...