检索Umbraco标记LINQ查询中的数据类型字段

时间:2018-02-23 16:48:08

标签: linq umbraco umbraco7

我想从我的内容的LINQ查询中为每个记录插入Umbraco.Tags数据类型字段的值到我的razor输出中。我找不到合适的语法。我意识到它应该是一个字符串数组,但我尝试过的一切都失败了。

在单个内容的页面中,我可以使用以下内容字段名称为“Tags”。

var tags = CurrentPage.Tags;

LINQ查询很复杂,但我只是尝试将标记添加到输出中,以便我可以在页面内搜索客户端的特定记录。我删除了大部分查询以便于阅读。

var products = Model.Content.Site().Descendants<PenList>().First().Children("penProduct")
                    .Where(x => x.IsVisible())
                    .OfType<PenProduct>()
                    .Select(x => new ProductSearchResultItem() {
                    FilterText = x.ProductName + " " + x.ProductDescription.ToString() + " " + x.CompanyName.NullSafeToString() + " " + x.ProductType.ToString() 
                            + " " + (x.Parent.GetProperty("tags") != null ? x.Parent.GetProperty("tags").Value : string.Empty)})

我也尝试过获取x.Tags或x.GetProperty(“tags”)但没有成功。任何建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

penProduct文档类型或penList上的tags属性是?看起来你正在penList上寻找它。

但我认为它的行为与任何其他字符串一样。我通常不使用类型化模式,但是为了在我使用的视图中获取标记值列表:

var tags = Model.Content.GetPropertyValue<string>("tags", "").Split(',');

答案 1 :(得分:0)

由于该字段实际上是一个字符串数组,我必须使用以下代码将该属性作为字符串数组泛型,否则它将返回“System.String []”类型的文本。

x.GetPropertyValue<string[]>("tags")