如何获取带有 foreach 的 "Name Value List" 类型的字段的值?



(on sitecore)我添加了一个新字段(名为:Button),类型为" Name Value list ";现在,通过foreach,我应该能够获取键的值,它应该成为一个按钮。所有这些都必须取代以前由每个"if"组成的代码。每个按钮,即:

<div class="podcastsButtons__content">

@if (!string.IsNullOrEmpty(tit.Category.SprekerURL))
{
<button class='podcastsBtn podcastsBtn--spreaker' data-url='@tit.Category.SprekerURL'>
<span></span>
</button>
}
@if (!string.IsNullOrEmpty(tit.Category.SpotifyURL))
{
<button class='podcastsBtn podcastsBtn--spotify' data-url='@tit.Category.SpotifyURL'>
<span></span>
</button>
}
@if (!string.IsNullOrEmpty(tit.Category.ApplePodcastURL))
{
<button class='podcastsBtn podcastsBtn--apple' data-url='@tit.Category.ApplePodcastURL'>
<span></span>
</button>
}
@if (!string.IsNullOrEmpty(tit.Category.GooglePodcastURL))
{
<button class='podcastsBtn podcastsBtn--google' data-url='@tit.Category.GooglePodcastURL'>
<span></span>
</button>

Name Value List"字段在Sitecore的内部存储类似于查询字符串,即以原始格式key1=value1&key2=value2等。

您可以手动解析字段值,例如使用Sitecore.StringUtil.ParseNameValueCollection,但更简单的方法通常是像这样转换字段:

var field = (Sitecore.Data.Fields.NameValueListField) item.Fields["Button"];
foreach (var key in field.NameValues.AllKeys)
{
var value = field.NameValues[key];
// do something with key and value
}

值得注意的是,Sitecore有一些内部编码问题,所以所有字符都不能在"名称值列表"中正确表示。字段,而不会导致内容损坏。

相关内容

最新更新