模板无法接收IList模型

时间:2019-01-24 17:02:48

标签: razor umbraco umbraco7

我正在编写Umbraco应用程序,需要将一些模型发送到从MasterPage继承的页面,如下所示:

@using ContentModels = App.Models.BlogPostViewModel
@inheritsUmbraco.Web.Mvc.UmbracoTemplatePage<IList<App.Models.BlogPostViewModel>>
@{
    Layout = "Master.cshtml";
}

但是我得到了错误:

  

类型'System.Collections.Generic.IList'必须可转换为'Umbraco.Core.Models.IPublishedContent'

这是控制器:

public ActionResult GetBlogsByMonthId(int monthId)
{
    var rootNode = Umbraco.TypedContentAtRoot().First();
    var blogs = BlogService.GetBlogsByMonthId(rootNode, monthId);
    return View("~/Views/BlogArchivePage.cshtml", blogs);
}

怎么了?我应该将新页面设置为高音扬声器吗?

2 个答案:

答案 0 :(得分:0)

“ IList”必须派生自IPublishedContent才能与UmbracoTemplatePage一起使用。相反,您可以使用UmbracoViewPage,它应该可以工作-参见下面的代码:)

 @using ContentModels = App.Models.BlogPostViewModel
 @inheritsUmbraco.Web.Mvc.UmbracoViewPage<IList<App.Models.BlogPostViewModel>>
 @{
     Layout = "Master.cshtml";
  }

答案 1 :(得分:0)

您的 BlogService.GetBlogsByMonthId(rootNode,monthId)是否返回IPublishedContent列表?我在做类似的事情:-

$h = $oauth->getRequestHeader(OAUTH_HTTP_METHOD_POST, $url,'realm=1234').',realm="1234"';

,然后将其传递给我的局部视图:-

mainBlogPageContent.Children.OrderByDescending(x => x.CreateDate).Take(numberOfArticles).ToList()

我忘记添加'ToList'-添加此操作可以解决我的问题。