0

新しいページ レイアウトに通常のマスター ページを使用したいが、メイン ナビゲーション メニュー コントロール (サード パーティ コントロール) を表示したくない場合、ページ レイアウトでそれを非表示にするにはどうすればよいですか? asp.net では、マスター ページでパブリック プロパティまたはメソッドを公開し、それを子ページから呼び出しますが、コード ビハインドまたは識別可能なマスター ページ クラスがないため、SharePoint で何ができるかわかりません。

4

1 に答える 1

0

私はそれをこのように機能させましたが、私は実装が好きではありません。

マスターページ:

...
            <c:Menu id="myMenu" runat="server" />
            ...
        </form>
    </body>
</html>

<script runat="server">
    public bool IsConsumerNavVisible
    {
        set
        {
            myMenu.Visible = value;
        }
    }
</script>

ページレイアウト:

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        System.Reflection.PropertyInfo pi = Page.Master.GetType().GetProperty("IsConsumerNavVisible");
        pi.SetValue(Page.Master, false, null);
    }
</script>

そのため、マスター ページでパブリック プロパティを公開して可視性を設定し、PageLayout でリフレクションを使用してそのプロパティを見つけて設定しました。PageLayout コードを <% %> スクリプト ブロックだけに入れてみましたが、実行されましたが、とにかくメニューが表示されてしまいました。それを Page_Load イベントハンドラーに入れると、それが修正されました。より良い方法があれば、私はすべて耳にします。

于 2013-03-07T20:29:23.633 に答える