在模板中渲染网格时遇到问题

时间:2015-11-11 20:56:21

标签: umbraco

我正在使用网格数据类型和自定义编辑器,而我在模板上渲染数据时遇到了问题。

我不相信自定义编辑器会导致任何问题,因为它似乎正常工作并存储数据。

我有一种感觉,这可能是因为我设置页面的方式:

基本上我有一个父页面,有嵌套的内容区域'它下面的文档类型。这些内容区域'有一个使用网格数据类型的属性。

在我的页面模板上,我试图遍历所有嵌套的内容区域,并为每个区域渲染网格数据。

所以在我的页面模板上我有这个:

<body>
....
@Html.Partial("About/ContentRegions")
....
</body>

然后在我的部分内容我有以下内容:

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage

@foreach (var contentRegion in Model.Content.Children.Where(cr => cr.IsVisible()))
{
    <div class="page-content-wrap">
        <div class="text-content" id="@(contentRegion.Name.ToLower().Replace(" ", ""))">
            <!-- Main Heading -->
            <h1>@(contentRegion.GetPropertyValue<string>("mainHeading"))</h1>

            <!-- Sub Heading -->
            <h3>@(contentRegion.GetPropertyValue<string>("introduction"))</h3>
            <div class="underline"></div>

            @Html.GetGridHtml(contentRegion, "regionBodyText");

        </div>
        <div class="text-separator">
            <!-- Separator -->
            <hr>
            <!-- Separator -->
        </div>
    </div>
}

希望到目前为止这一切都有意义,你可以看到我只是尝试为每个嵌套的内容区域渲染网格数据。但是,当我尝试查看该页面时,收到以下错误:

enter image description here

当我编辑&#39; Bootstrap3.cshtml&#39;查看并简单地吐出模型,它似乎显示了包含网格编辑器所有内容的json字符串,即:

enter image description here

因此,从我可以收集到的内容来看,json似乎没有被正确地反序列化以使bootstrap3视图处理数据。它只是将它视为一个字符串,这就是它抛出错误的原因。

我并不确切地知道我在这里做错了什么,但我觉得这与我有这个内容区域的关系是什么?&#39;嵌套的孩子设置。有人能指出我在正确的方向吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您使用自己的网格模板吗? umbraco家伙用动态实现了模板,这就是你得到这个错误的原因。模板的标题应如下所示:

@inherits UmbracoViewPage<dynamic>
@using Umbraco.Web.Templates
@using Newtonsoft.Json.Linq

您可以使用GridData将网格作为类型模型。

希望这有帮助。