如何有条件地检查EpiServer:MenuList中的.aspx文件中的属性?

时间:2013-01-10 15:49:29

标签: asp.net episerver

我正在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">

排除代码的正确语法是什么,而不是打印出“Something”?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

您可以从基础PageTreeData control挂接Filter事件。

尝试这样的事情

yourMenulistControl.Filter += 
       (o, args) => new FilterCompareTo("PageTypeName", "YOURPAGETYPENAME")
                        .Filter(args.Pages);