json - Umbraco 7.2.8相关链接 Razor 展示

标签 json razor cdata umbraco7 umbraco-mvc

我有一个文档类型,其中包含 Umbraco 7.2.8 中的相关链接

我想在 View 中显示它,但 HasValue 为 false,并且 GetPropertyValue("latedLinks") 也为空。

所以我查看了数据库中的节点,属性“latedLinks”被写为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 轻松显示在 View 上。

不确定如何在 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>
    }
}  

https://our.umbraco.org/documentation/getting-started/backoffice/property-editors/built-in-property-editors/related-links

关于json - Umbraco 7.2.8相关链接 Razor 展示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32680307/

相关文章:

xml - xml 上的奇怪字符串 (...)

android - 如何从谷歌自定义搜索 api 获取无限查询

ruby JSON.pretty_generate(hash,opts) 不使用 opts

javascript - 使用 Json 的图表 js

mysql - JSON_SET 不更新 MySQL 中的空 JSON 字段

asp.net-mvc - ASP.NET MVC 和 Visual Studio 2013 : Compilation Error

javascript - Bootstrap Tooltip 动态值 取决于是否需要填写

xml - XSLT 将元素从源复制到 CDATA 部分

linq - 在 C# 中从 XML 解析 CData

c# - 在布局 View 上填充 ViewBag