如果没有没有客户端代码的子项(MVC),如何隐藏内容占位符

时间:2012-09-12 17:37:51

标签: asp.net-mvc master

我在MasterPageView中有一个ContentPlaceholder。我的所有其他页面都来自同一个主页,我有一个页面需要大约70%的主要行为。主人中有一个导航面板,即使页面留空,也会吐出不必要的html。看起来像这样:

<div class="span3">
    <div class="side_navigation">
        <ul>
            <asp:ContentPlaceHolder ID="SideNavigation" runat="server" />
        </ul>
    </div>
</div><%-- /master sub-navigation --%>

每当我的占位符(SideNavigation)有0个孩子时,我只想隐藏所有这个标记。我不想使用javascript。我宁愿在服务器上完成这项工作,并以较少的责任和标记将其交付给客户端。我已经尝试过“this.Sid​​eNavigation.Controls.Count”,但它总是最终为0.如果有一种方法我可以绑定到一个加载的事件,然后测试这个逻辑,这将是伟大的。我可以为我的主人制作一个代码隐藏文件,但是只能在.master文件中完成我的目标会很好。

让我知道你的想法。

1 个答案:

答案 0 :(得分:0)

我可能会建议在没有导航的情况下为页面使用不同的母版页。您可以拥有嵌套的母版页,因此您不一定需要复制代码才能执行此操作 但是,如果您希望保持这样,我个人会使用一些javascript(使用jquery),如下所示

$(function(){
  if($('.span3 .side_navigation ul li').length() == 0){
    $('.span3').hide(); 
  }
});
显然我会给span3一个ID,让它不会隐藏每个span3,但你希望得到这个想法。