0

我正在 EpiServer 中构建一个菜单,我只想包含特定页面类型的项目。如果重复项的页面类型等于“X”,则将其打印出来,否则什么也不做。

<ItemTemplate>
 <li>
    <span class="menu-level-1">
      <%# Container.CurrentPage.PageTypeName == "NameOfPageType" ? "Something": "" %>                       
      <span class="menu-divider"></span>
    </span>
 ...
 ..
 .

我想打印出每个(符合条件的)项目页面名称,即:

<EPiServer:Property PropertyName="PageName" runat="server">

执行代码而不是打印出“某事”的正确语法是什么?

4

2 回答 2

1

您可以选择以下任何一种:

<%# Container.CurrentPage.PageTypeName == "NameOfPageType" ? Container.CurrentPage.PageName : "" %>

或使用标准 ASP.NET PlaceHolder 控件包装您的 Property 控件:

<span class="menu-level-1">
  <asp:PlaceHolder runat="server" Visible=<%# Container.CurrentPage.PageTypeName == "NameOfPageType" %> >
        <EPiServer:Property PropertyName="PageName" runat="server" />
      </asp:PlaceHolder>
      <span class="menu-divider"></span>
</span>
于 2013-01-10T16:07:06.650 回答
1

PageTreeData您可以从底层控件挂钩到 Filter 事件。

尝试这样的事情

yourMenulistControl.Filter += 
       (o, args) => new FilterCompareTo("PageTypeName", "YOURPAGETYPENAME")
                        .Filter(args.Pages);
于 2013-01-10T17:19:35.787 回答