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

Getting error foreach statement cannot operate on variables of type 'xyz' because 'xyz' does not contain a public definition for '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)