Umbraco 7.2.8 相关链接剃须刀展示
Umbraco 7.2.8 related links razor display
我有一个文档类型,其中包含 Umbraco 7.2.8 中的相关链接
我想在视图中显示它,但 HasValue 为 false,GetPropertyValue("relatedLinks") 也为空。
于是我查看了数据库中的节点 属性 "relatedLinks" 写成CData,而不是 JSON:
<relatedLinks><![CDATA[[
{
"caption": "Some caption",
"link": 1163,
"newWindow": false,
"internal": 1163,
"edit": false,
"isInternal": true,
"internalName": "Caption",
"type": "internal",
"title": "Link Title"
}
]]]></relatedLinks>
据我所知,在这个 Umbraco 版本中,它应该写成 JSON(例如,按照此处的示例 https://our.umbraco.org/forum/developers/razor/54450-Related-Links-Razor-Macro-Umbraco-7),然后可以使用 Razor 轻松显示在视图上。
不确定我应该如何在 Razor 中使用 CDATA 片段?
或者如何强制cms写成JSON?
您尝试过将它用作 JArray 吗?
@using Newtonsoft.Json.Linq
@{
if (Model.Content.HasValue("relatedLinks") && Model.Content.GetPropertyValue<string>("relatedLinks").Length > 2)
{
<ul>
@foreach (var item in Model.Content.GetPropertyValue<JArray>("relatedLinks"))
{
var linkUrl = (item.Value<bool>("isInternal")) ? Umbraco.NiceUrl(item.Value<int>("internal")) : item.Value<string>("link");
var linkTarget = item.Value<bool>("newWindow") ? "_blank" : null;
<li><a href="@linkUrl" target="@linkTarget">@(item.Value<string>("caption"))</a></li>
}
</ul>
}
}
我有一个文档类型,其中包含 Umbraco 7.2.8 中的相关链接
我想在视图中显示它,但 HasValue 为 false,GetPropertyValue("relatedLinks") 也为空。
于是我查看了数据库中的节点 属性 "relatedLinks" 写成CData,而不是 JSON:
<relatedLinks><![CDATA[[
{
"caption": "Some caption",
"link": 1163,
"newWindow": false,
"internal": 1163,
"edit": false,
"isInternal": true,
"internalName": "Caption",
"type": "internal",
"title": "Link Title"
}
]]]></relatedLinks>
据我所知,在这个 Umbraco 版本中,它应该写成 JSON(例如,按照此处的示例 https://our.umbraco.org/forum/developers/razor/54450-Related-Links-Razor-Macro-Umbraco-7),然后可以使用 Razor 轻松显示在视图上。
不确定我应该如何在 Razor 中使用 CDATA 片段?
或者如何强制cms写成JSON?
您尝试过将它用作 JArray 吗?
@using Newtonsoft.Json.Linq
@{
if (Model.Content.HasValue("relatedLinks") && Model.Content.GetPropertyValue<string>("relatedLinks").Length > 2)
{
<ul>
@foreach (var item in Model.Content.GetPropertyValue<JArray>("relatedLinks"))
{
var linkUrl = (item.Value<bool>("isInternal")) ? Umbraco.NiceUrl(item.Value<int>("internal")) : item.Value<string>("link");
var linkTarget = item.Value<bool>("newWindow") ? "_blank" : null;
<li><a href="@linkUrl" target="@linkTarget">@(item.Value<string>("caption"))</a></li>
}
</ul>
}
}