在 Umbraco 8 中从 JToken 渲染网格布局

Rendering Grid Layout From JToken in Umbraco 8

我创建了一个 DocType MyDocType

DocTypeGridEditor 要求它是 ElementType 类型,因此,我在 Umbraco Backoffice 中检查它是那种类型。

它包含一个属性:GridLayout,即:

public Newtonsoft.Json.Linq.JToken MyGrid => this.Value<Newtonsoft.Json.Linq.JToken>("myGrid");

我想在我的 cshtml 中渲染它,但是

@Html.GetGridHtml()

要求第一个参数的类型为 IPublishedContent。 我正在使用 UmbracoViewPage 作为模板。

有没有办法渲染它的内容? 甚至可以从 ElementModel 渲染网格吗?

我已经通过创建自己的 HtmlHelper 扩展解决了这个问题。 这是一个片段:

public static class GridLayoutExtensions
{
    public static MvcHtmlString GetGridHtml(this HtmlHelper html, IPublishedElement publishedElement, string propertyAlias)
    {
        if (propertyAlias == null)
        {
            return new MvcHtmlString("");
        }

        var model = publishedElement
            .GetProperty(propertyAlias)
            .GetValue();

        return html.Partial("Grid/bootstrap3", model);
    }
}

现在我需要做的就是通过传递包含 GridLayout 属性.

的元素来使用它
@Html.GetGridHtml2(Model.MyDocType, "gridLayout")

而且它完美无缺。