Umbraco渲染网格

时间:2017-08-23 10:50:02

标签: c# asp.net-mvc umbraco7

嗨,我在渲染umbraco网格时遇到了很多麻烦。

我有umbraco 7.6和MVC的解决方案。 所以在我的控制器中我想尝试将渲染的网格添加到我的模型中,所以我可以在视图中调用该模型。

在我的控制器中:

public ActionResult BlogItem()
{
    var model = new BlogItemViewModel();
    // GET grid 1
    var aboutGrid = CurrentPage.GetGridHtml("gridLayout");
    //add to model.
    model.GridLayout = new HtmlString(aboutGrid.ToHtmlString());
    return View(model);
}

在我看来,我应该能够称之为:

@Model.GridLayout

但是我得到了一个异常,当我试图调用它时,我的控制器并没有真正告诉我。

  

System.Web.HttpCompileException:'外部组件引发了异常。'

     

$ exception error CS0246:找不到类型或命名空间名称'UmbracoViewPage'(您是否缺少using指令或程序集引用?)“} System.Web.HttpCompileException

修改1

@model Carinas_Univers.Models.BlogItemViewModel
@{
    Layout = "Master.cshtml";
}

我有一个视图模型,母版页和一个主控制器。 mastercontroller继承自RenderMvcController

2 个答案:

答案 0 :(得分:1)

您的观点是否继承自UmbracoViewPage?如果是这样,那么听起来它不知道命名空间UmbracoViewPage是什么。简单的解决方案是将其更改为Umbraco.Web.Mvc.UmbracoViewPage

答案 1 :(得分:0)

您应该加载自定义类以及Umbraco视图页。

你试过这个吗?

@inherits UmbracoViewPage<Carinas_Univers.Models.BlogItemViewModel>

您需要获取并加载控制器中的当前页面以获取页面属性并将其分配给模型属性

为此,您可以执行以下操作:

var currentPageId =  UmbracoContext.Current.PageId;   
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
IPublishedContent content = umbracoHelper.TypedContent(currentPageId);