【问题标题】:Foreach cannot operate on a 'method group'. Did you intend to invoke the 'method group'?Foreach 不能对“方法组”进行操作。您是否打算调用“方法组”?
【发布时间】:2015-02-24 10:22:49
【问题描述】:

我对 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;
}

【问题讨论】:

  • 编译错误指向哪一行?

标签: c# asp.net-mvc umbraco


【解决方案1】:

如果不添加括号,编译器会将方法视为method group。如果您想调用该方法并遍历结果,请使用:

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

【讨论】:

  • 在你的模型中创建一个列表,以便按名称分组并将列表呈现到 foreach 中
【解决方案2】:

Model.Breadcurmb 是一个方法,而不是一个属性或字段,所以如下调用它

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

【讨论】:

    猜你喜欢
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 2013-10-23
    • 2012-03-27
    • 1970-01-01
    相关资源
    最近更新 更多