ASP.Net - Как получить доступ к объекту главной страницы с обычной страницы - PullRequest
3 голосов
/ 20 июля 2010

В проекте, над которым я работаю, код главной страницы выполняет множество сложных проверок и подтверждений, которые определяют список навигации, отображаемый в TreeView страницы. Теперь мне нужен способ доступа к этому списку с другой интерфейсной страницы, такой как "frontpage.aspx".

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

Во-вторых, это позволит мне легко изменять отображаемый контент любой страницы, не проверяя базу данных и не сохраняя сеансы для каких-либо конкретных прав, которыми обладает текущий пользователь, так как я могу просто посмотреть, если TreeView содержит, например, «Администратор продуктов» а затем используйте это, чтобы скрыть или отобразить раздел страницы, связанный с функциональностью «Product Admin».

Итак, есть ли какие-нибудь советы о том, как это сделать, или если это вообще возможно?

Ответы [ 3 ]

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

Предполагая, что frontpage.aspx является страницей содержимого, с которой вы определенно можете получить доступ к главной странице.

Например, этот код найдет элементы управления TextBox и Label, которые находятся на главной странице.Вы должны иметь возможность адаптировать его для поиска вашего TreeView:

// Gets a reference to a TextBox control inside a ContentPlaceHolder
ContentPlaceHolder mpContentPlaceHolder;
TextBox mpTextBox;
mpContentPlaceHolder = 
    (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
if(mpContentPlaceHolder != null)
{
    mpTextBox = (TextBox) mpContentPlaceHolder.FindControl("TextBox1");
    if(mpTextBox != null)
    {
        mpTextBox.Text = "TextBox found!";
    }
}

// Gets a reference to a Label control that is not in a 
// ContentPlaceHolder control
Label mpLabel = (Label) Master.FindControl("masterPageLabel");
if(mpLabel != null)
{
    Label1.Text = "Master page label = " + mpLabel.Text;
}

Для получения дополнительной информации см. - http://msdn.microsoft.com/en-us/library/c8y19k6h.aspx

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

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

((Styles_Master)Page.Master).IsMyProperty = "new value";
0 голосов
/ 20 июля 2010

Вы должны иметь возможность получить к нему доступ через свойство Master, т.е.

TreeView tv = Master.MyTreeViewControl;

или

TreeView tv = (TreeView)Master.FindControl("MyTreeViewControl");

Эта страница в MSDN содержит больше информации о программной работе с главными страницами.

...