Подробное объяснение главной страницы в ASP.NET 2.0.
Автор:Eve Cole
Время обновления:2009-06-30 16:37:05
Чтобы уменьшить проблему изменения всего сайта при изменении одной страницы во время веб-дизайна, после обновления vs2003 до vs2005 была добавлена концепция мастера.
Вы можете думать об этом как о «шаблоне веб-страницы». Разница в том, что вам больше не нужно обновлять каждую страницу. После того, как вы его измените, все веб-страницы будут изменены раз и навсегда.
Начнем с простой демонстрации основного использования:
1. Сначала откройте Visual Studio 2005, создайте новый веб-сайт asp.net, файловую систему C#.
2. В обозревателе решений щелкните правой кнопкой мыши, чтобы создать новый элемент:
3. Выберите главную страницу:
4. Откройте MasterPage.master, внутри находится элемент управления contentplaceholder, будьте осторожны и ничего не записывайте в этот элемент управления.
Мы переходим в представление дизайна и добавляем текст верхнего и нижнего колонтитула за пределами этого элемента управления.
5. После сохранения мы можем использовать его для создания других страниц. Существует два метода: 1. Щелкните правой кнопкой мыши в любом месте главной страницы и выберите «Добавить страницу содержимого». 2. Создайте новый элемент в обозревателе решений и установите флажок «Выбрать главную страницу» при создании страницы aspx.
6. Выберите соответствующую главную страницу.
7. В исходном коде вновь сгенерированной страницы есть только эти несколько предложений:
- <%@PageLanguage="C#"MasterPageFile="~/MasterPage.master"AutoEventWireup="true"
CodeFile="Default2.aspx.cs"Inherits="Default2"Title="UntitledPage"%> - <asp:ContentID="Content1"ContentPlaceHolderID="ContentPlaceHolder1"Runat="Server">
- </asp:Content>
|
Мы видим элемент управления содержимым, который соответствует элементу управления ContentPlaceHolder1 главной страницы и преобразуется в страницу просмотра:
8. Текст в шапке и подвале серый, и редактировать его мы можем только в содержании.
После сохранения заходим на страницу default2.aspx, F5., видим страницу:
9. Как и ожидалось, взглянем на исходный код:
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <htmlxmlns="http://www .w3.org/1999/xhtml">
- <head><title>
- UntitledPage
- </title></head>
- <body>
- <formname="aspnetForm"method="post"action="Default2.aspx"id="aspnetForm ">
- <div>
- <inputtype="hidden"name="__VIEWSTATE"id="__VIEWSTATE"
value=" - /
- wEPDwULLTEwMDUyNjYzMjhkZASHJAhe9XmxUHPbOeONMX2y6XYi"/>
- </div>
- <div>
- заголовок этой страницы<br/>
- содержание этой страницы:hello,world!<br/>
- нижний колонтитул этой страницы </div > </
- форма
> </тело> - </html>
|
Основной контент размещается в div, но страница контента не размещается в отдельном div, что означает, что к подстраницам в мастер-странице не будет добавлен избыточный код. Это дает нам большую гибкость в программировании и макетировании веб-страниц. Мы можем в полной мере использовать позиционирование CSS + DIV, а также позиционирование таблиц. Нет необходимости изменять каждую страницу при изменении.
10. Для мастера, который не является частью фиксированного контента, мы можем использовать несколько ContentPlaceHolder1 для макета. В следующем примере для позиционирования используется таблица:
11. На соответствующей подстранице будет два содержимого:
Сгенерированный код:
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <htmlxmlns="http://www .w3.org/1999/xhtml">
- <head><title>
- UntitledPage
- </title></head>
- <body>
- <formname="aspnetForm"method="post"action="Default3.aspx"id="aspnetForm ">
- <div>
- <inputtype="hidden"name="__VIEWSTATE"id="__VIEWSTATE"
value="/wEPDwUKMTY1NDU2MTA1MmRkPjWLPyqA5JXcW5ivHc0NiYajQTU="/> - </div>
- <div>
- заголовок этой страницы<br/>
- <table>
- <tr>
- <td>
- ohmyContent1
- </td >
- <td>
- hisyContent2
- </td>
- </tr>
- < /table>
- нижний колонтитул этой страницы
- </div>
- </form>
- </body>
- </html>
|
12. Используйте его гибко. Хотя CSS также может использовать DIV для решения этой проблемы, появление некоторых нестандартных элементов управления сложно контролировать с помощью CSS. Если вы создадите другой набор мастеров, MasterPage2.master, вы можете использовать средние динамические настройки:
protected void Page_PreInit (отправитель объекта, EventArgs e) { MasterPageFile = "~/MasterPage2.master"; } |
Давайте сначала сюда. Говорят, что можно использовать и вложенные приложения, но пока достаточно использовать это в сочетании с темой. Поговорим об этом в следующий раз.