0

MasterPageView 内に ContentPlaceholder があります。他のすべてのページは同じマスターから作成されており、このマスターの動作の約 70% を必要とするページが 1 つあります。ページが空白のままになっていても、不要な 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 ファイルのみで目的を達成できるとよいでしょう。

どう考えているか教えてください。

4

1 に答える 1

0

おそらく、ナビゲーションのないページには別のマスター ページを使用することをお勧めします。入れ子になったマスター ページを持つことができるので、これを行うために必ずしもコードを複製する必要はありません。
ただし、このままにしておきたい場合は、次のように個人的に少しのjavascript(jqueryを使用)を使用します

$(function(){
  if($('.span3 .side_navigation ul li').length() == 0){
    $('.span3').hide(); 
  }
});

明らかに、すべての span3 を非表示にしないようにするために、span3 に ID を与えますが、うまくいけばアイデアが得られます。

于 2012-09-13T17:25:47.037 に答える