2

Umbraco 7.2.8 に関連リンクを含むドキュメント タイプがあります。

ビューに表示したいのですが、HasValue が false になり、GetPropertyValue("relatedLinks") も空になります。

そこで、データベースのノードを調べたところ、プロパティ「relatedLinks」は JSON ではなく CData として記述されています。

  <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として書き込む方法は?

4

1 に答える 1

4

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

于 2015-09-21T08:01:37.343 に答える