- •Обязательные компоненты
- •Создание макета главной страницы
- •Создание макетной таблицы для главной страницы
- •Добавление статического содержимого на главную страницу
- •Добавление прототипа содержимого
- •Создание содержимого главной страницы
- •Создание страницы Home
- •Добавление содержимого к странице Home
- •Создание страницы About
- •Тестирование страниц
- •Тестирование страниц
- •Создание ссылок на члены главной страницы.
- •Добавление свойства к главной странице
- •Создание ссылки на свойство CompanyName на странице содержимого
- •Тестирование ссылки на свойство главной страницы
- •Динамическое изменение главных страниц
- •Создание копии главной страницы
- •Добавление кнопок для выбора альтернативной главной страницы
- •Написание кода для динамического выбора главной страницы
- •Тестирование динамических главных страниц
- •Замечания по использованию главных страниц
- •Следующие действия
Написание кода для динамического выбора главной страницы
Перейдите к странице About.aspx или откройте ее.
Примечание.
Уже созданная страница Home содержит директиву @ MasterType, которая фактически привязывает ее к одной главной странице (Master1.master). Поэтому невозможно динамически назначать главные страницы странице Home и работать с другими созданными страницами вместо нее.
В обозревателе решений щелкните правой кнопкой мыши файл About.aspx и выберите команду Просмотреть код, чтобы открыть редактор кода.
Добавьте в определение класса следующий код:
Язык Visual Basic
Копировать код
Sub Page_PreInit(ByVal sender As Object, ByVal e As EventArgs) _
Handles Me.PreInit
If Not Session("masterpage") Is Nothing Then
Me.MasterPageFile = CType(Session("masterpage"), String)
End If
End Sub
Язык C#
Копировать код
void Page_PreInit(Object sender, EventArgs e)
{
if(Session["masterpage"] != null)
{
this.MasterPageFile = (String) Session["masterpage"];
}
}
Код задает значение свойства MasterPageFile текущей страницы значению в переменной сеанса, если имеет место. Этот код должен выполняться в обработчике Page_PreInit; он не может выполняться в обработчике, который запускается несколько позже, чем обработчик Page_PreInit (например, в обработчике Page_Init), потому что главная страница должна быть установлена так, чтобы страница могла создать ее экземпляр до любой следующей инициализации.
Теперь можно протестировать динамические главные страницы.
Тестирование динамических главных страниц
На странице About.aspx нажмите клавиши CTRL+F5, чтобы запустить страницу.
Страница откроется в обозревателе, объединенная с главной страницей по умолчанию Master1.master.
Щелкните ссылку Plain.
Страница будет отображена повторно, теперь объединенная со страницей Master2.master, которая не содержит фоновый цвет.
Щелкните ссылку Colorful.
Страница снова отобразится с использованием Master1.master.
Замечания по использованию главных страниц
Существует несколько проблем, о которых нужно знать при работе с главной страницей.
В реальном приложении такие сведения, как имя компании, вероятно, будут сохраняться в файле конфигурации и считываться напрямую на страницах содержимого. Однако представленный здесь сценарий является простой иллюстрацией того, как создавать ссылку на члены главной страницы на страницах содержимого.
К членам на главной странице можно обратиться даже без включения директивы @ MasterType. Однако для этого необходимо привести свойство Page..::.Master к соответствующему типу главной страницы (свойство Master имеет значение null, если страница не содержит главной страницы). Дополнительные сведения см. в разделе Работа с главными страницами ASP.NET программными средствами.
На элементы управления можно ссылаться на главной странице с помощью метода Master.FindControls. Дополнительные сведения см. в разделе Работа с главными страницами ASP.NET программными средствами.
Существует несколько проблем, о которых следует знать при работе с динамическими главными страницами:
Сценарий изменения главных страниц упрощен, чтобы в пошаговом руководстве уделить внимание главным страницам. В реальном приложении, скорее всего, больше потребуется отобразить выбор макетов и затем сохранение предпочтений пользователя с помощью профилей. Дополнительные сведения см. в разделе Общие сведения о свойствах профилей ASP.NET.
Можно сконфигурировать веб-узел таким образом, чтобы все страницы использовали одну и ту же главную страницу. Можно было бы иметь несколько страниц, которые могли бы использовать альтернативную главную страницу, которую можно настроить в коде таким же образом, как показано в этом разделе пошагового руководства. Подробные сведения см. в главе "Определение области главных страниц" в разделе Общие сведения о главных страницах ASP.NET.
Необходимо добавить код со страницы Home.aspx на каждую страницу, где нужно переопределить главную страницу по умолчанию.