我通过SelectMany
以下方式使用该属性:
[SelectMany(SelectionFactoryType = typeof(TagsSelectionFactory))]
public virtual string Tags { get; set; }
具有以下内容SelectionFactory
:
public class TagsSelectionFactory : ISelectionFactory
{
public IEnumerable<ISelectItem> GetSelections(ExtendedMetadata metadata)
{
var articleTags = DataFactory.Instance.GetChildren<ArticleTagPage>(new ContentReference(18));
var tags = new List<SelectItem>();
foreach (var item in articleTags)
{
tags.Add(new SelectItem { Text = item.TagName, Value = item.ContentLink.ID });
}
return tags;
}
}
这就是我检索值的方式:
var articleObjects = DataFactory.Instance.GetChildren<ArticlePage>(currentPage.ArticlesLocation);
foreach (var item in articleObjects)
{
//this is where i get the csv value
var tags = item.Tags;
}
//ArticleTagPage.cs
[ContentType(DisplayName = "ArticleTagPage", GUID = "0401929a-903a-414f-acd1-61ad11319462", Description = "")]
public class ArticleTagPage : PageData
{
[CultureSpecific]
[Display(Name = "Tag Name", Description = "", GroupName = SystemTabNames.Content, Order = 1)]
public virtual string TagName { get; set; }
}
所有这些ArticleTagPage
都位于ArticleTagsContainerPage
. 目的是管理每篇文章的标签集合,有点像带有标签的 SO 问题。
我的问题是,一旦属性被填充,它就会包含一个逗号 ( ,
) 分隔的字符串,如果数据包含逗号,这可能会导致问题。
是否可以将分隔符更改为 a;
或 a之类的东西|
,或者只返回所选值的集合?