Шаблон не может получить модель IList - PullRequest
0 голосов
/ 24 января 2019

Я пишу приложение 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 голосов
/ 08 февраля 2019

Ваш BlogService.GetBlogsByMonthId (rootNode, monthId) возвращает список IPublishedContent?Я делал что-то похожее: -

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

, а затем передавал его в мое частичное представление как: -

@inherits Umbraco.Web.Mvc.UmbracoViewPage<IList<IPublishedContent>>

Я забыл добавить 'ToList' - добавление это решило мою проблему.

0 голосов
/ 25 января 2019

«IList» должен быть производным от IPublishedContent, чтобы иметь возможность использовать его с UmbracoTemplatePage.Вместо этого вы можете использовать UmbracoViewPage, который должен работать - см. Код ниже :)

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