【问题标题】:Umbraco Render gridUmbraco 渲染网格
【发布时间】:2017-08-23 10:50:02
【问题描述】:

您好,我在渲染 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 错误 CS0246:找不到类型或命名空间名称“UmbracoViewPage”(您是否缺少 using 指令或程序集引用?)"} System.Web.HttpCompileException

编辑 1

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

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

【问题讨论】:

    标签: c# asp.net-mvc umbraco7


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您应该与 Umbraco 视图页面一起加载您的自定义类。

      你试过了吗?

      @inherits UmbracoViewPage<Carinas_Univers.Models.BlogItemViewModel>
      

      您需要在控制器中获取并加载当前页面,以便获取页面属性并将它们分配给模型属性

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

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

      【讨论】:

      • 在将其添加到我的视图时,我得到一个“找不到类型或名称空间”。但它应该是必要的似乎很奇怪。我应该能够在我的视图模型中添加一个网格,然后显示它。
      • @andrelange91 你建好项目了吗?
      • 你把模型类放在哪里了?解决方案资源管理器中的路径是什么?
      • solutionname.Models.ModelName 是的,我建立了项目。
      • 当我尝试运行它时,在我的控制器中得到一个 system.web http 编译异常。 “aboutgrid”上的“外部组件引发了异常”
      猜你喜欢
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 2017-11-02
      相关资源
      最近更新 更多