Umbraco 7:将属性映射到页面并检查是否与当前页面关联

时间:2014-09-03 10:59:36

标签: asp.net razor umbraco umbraco7 umbraco6

在我的内容部分中,我有一个属性编辑器(Archetype),它允许独立于内容树设置站点的内容。 我需要根据我当前所在的页面仅显示一个类别中的子类别。我现在拥有的是:

//get the content with id of 1123 from Content Section, type DynamicPublishedContent
var catItems = Umbraco.Content(1123).categoryItem; 

foreach (var item in catItems)
{
  foreach (var sub in item.GetValue<ArchetypeModel>("subCatItem"))
  {
    <div class="tbl_dt">
        <p class="offerName">@sub.GetValue("offerName")</p>
        <p class="departurePort">@sub.GetValue("departurePort")</p>
    </div>
 }
}

有关其他详细信息,请参阅此参考:Umbraco 7: Get fields from same property based on current page

问:如何将属性映射到内容页面并检查是否与当前页面关联,并仅显示包含映射当前页面的字段?可以通过添加content picker来完成吗?如果是这样,我如何检查它是否与当前页面相关联?

1 个答案:

答案 0 :(得分:0)

首先,通过id引用代码中的内容并不是一种好习惯。而是使用保证不被用户删除的文档类型别名。

现在要检查当前页面上是否存在属性,只需

即可
@if (CurrentPage.HasValue("subCatItem"))
{
   string propertyStoredValue = CurrentPage.subCatItem.ToString();
}

其中“subCatItem”是您要检查的属性的别名。在这种情况下,属性的类型是不相关的,并且要记住,如果属性不是强制性的并且没有给出值,则上述语句将评估为false,即使属性存在于文档类型上(有意义吗?)< / p>