在 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")
而且它完美无缺。
我创建了一个 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")
而且它完美无缺。