0

我创建了一个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 渲染 Grid 吗?

4

1 回答 1

1

我已经通过创建自己的 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")

它完美无缺。

于 2019-12-20T15:10:08.650 回答