Отключить функцию в главной странице на странице содержимого - PullRequest
0 голосов
/ 28 июля 2010

У меня есть мастер-страница для всех моих страниц ASP.NET. Он отлично работает на 95% страниц ... Кроме того, он также включает в себя нежелательные атрибуты, которые включены в другие 5% страниц. Это вызывает проблемы приложения. Можно ли каким-либо образом выбрать для страниц содержимого включение / отключение функции, доступной на главной странице? Один из вариантов, который я могу придумать, заключается в том, чтобы мастер-страница смотрела на имя страницы и затем решала, что делать, но в долгосрочной перспективе это немного неуклюже ...

Ответы [ 4 ]

2 голосов
/ 28 июля 2010

Вы можете добавить директиву MasterType на своей странице контента, чтобы иметь доступ к классу мастер-страницы ... и оттуда вы можете реализовать, чтобы включить функции отключения вашей мастер-страницы ...

<%@ MasterType virtualpath="~/MyMaster.master"%>

и в вашем коде у вас будет доступ к свойству Master как типизированный класс ...

0 голосов
/ 28 июля 2010

Предполагая, что эти функции представлены в разметке asp главной страницы, вы можете заключить их в ContentPlaceHolderControl:

    <asp:ContentPlaceHolder ID="OptionalContent" runat="server">
        *** This is my optional content ***
    </asp:ContentPlaceHolder>

На 95% страниц, на которых работает этот контент, вы можете просто не включать элемент управления контентом для "OptionalContent" на своей странице. Для 5%, где это не работает, вы можете включить пустой элемент управления содержимым для «OptionalContent»:

            <asp:Content ContentPlaceHolderID="OptionalContent" runat="server"></asp:Content>
0 голосов
/ 28 июля 2010

Вы можете получить доступ к главной странице напрямую, перейдя на страницу и приведя ее к типу своей главной страницы, как показано ниже.Это соединит вас с главной страницей, но единственный другой вариант, который я могу придумать, - это создать ключ в сессии.

(MyMasterPage)Page.Master
0 голосов
/ 28 июля 2010

На главной странице укажите заполнитель содержимого:

<asp:ContentPlaceHolder ID="foo" runat="server">
    <div>Some default content</div>
</asp:ContentPlaceHolder>

На 5% страниц, которым не нужно поведение по умолчанию, переопределите этот заполнитель пустой строкой:

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="foo" />

Другие 95% страниц будут иметь общее поведение.

...