Foreach无法操作“方法组”。您是否打算调用“方法组”?

4

我是一名C#新手,也遇到了一个无法解决的错误?

我有一个视图,想要循环一系列节点,因此我尝试这样做:

@foreach (var crumb in Model.Breadcrumb)
{
  //My code
}

在我的视图模型中,我有这个:

public IEnumerable<LinkModel> Breadcrumb(IPublishedContent content) {
    //Do logic. 
     return GetFrontpage(content, true).Reverse().Select(item => new LinkModel {
        Target = "",
        Text = item.Name,
        Url = item.Url
    }); 
}

private static IEnumerable<IPublishedContent> GetFrontpage(IPublishedContent content, bool includeFrontpage = false)
{
    var path = new List<IPublishedContent>();

    while (content.DocumentTypeAlias != "frontpage")
    {
        if (content == null)
        {
            throw new Exception("No frontpage found");
        }
        path.Add(content);
        content = content.Parent;
    }
    if (includeFrontpage)
    {
        path.Add(content);
    }
    return path;
}

1
编译错误指向哪一行? - Dreamwalker
2个回答

6

如果您不添加括号,则编译器将该方法视为方法组。如果要调用该方法并迭代结果,请使用:

@foreach (var crumb in Model.Breadcrumb(/* your parameters */))

在您的模型中创建一个按名称分组的列表,并将其渲染为foreach。 - Shahzad Khan

3

Model.Breadcurmb 是一个方法,而不是属性或字段,因此请按照以下方式调用它。

     @foreach (var crumb in Model.Breadcrumb(content))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接