Веб разработка 101: Часть 4, Использование размещения (окончание)


19.12.2011

В первой половине этого урока мы разобрали базовые возможности инструмента 'Razor' для создания страниц. Теперь пришла пора взглянуть на него несколько с иной точки зрения.

Создание страницы размещения

Мы создали страницу, а затем использовали Razor для автоматического вывода той или иной информации - когда страница отображалась, появлялись заголовок и код нижнего колонтитула. Это называется подход "снизу вверх".

Другой, и, возможно, более эффективный подход заключён в обратном. Создается Layout (условно будем называть его "слой", поскольку вы накладываете их последовательно один за другим), который вы используете в качестве шаблона для каждой страницы, и затем вставляете в него определенный контент (какой хотите). Это большое преимущество данного подхода.

Давайте посмотрим, как это работает: создайте новую страницу CSHTML, и назовите ее _siteLayout.cshtml.

Замените контент страницы, которую создавали, на следующий. Это кажется вам знакомым, так как это все и есть содержание страницы default.html, которую вы создавали ранее:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" />

<title>My Favorite Movies</title> <link rel="stylesheet" type="text/css" href="movies.css" />

</head> <body> <header> <h1>A list of my Favorite Movies</h1> </header>

<div id="movieslist"> <ol> <li><a href="#">It's a wonderful life</a></li>

<li><a href="#">Lord of the Rings</a></li> <li><a href="#">The Fourth World</a></li>

<li><a href="#">The Lion King</a></li> </ol> </div> <div id=”footer”> <footer>

This site was built using Microsoft WebMatrix.

<a href="http://web.ms/webmatrix">Download it now.</a> </footer> </div> </body> </html>

Теперь удалите ‘movieslist’ <div> и замените его следующим кодом:

@RenderBody()

Помните, ранее мы рассказывали, что символ @ дает команду WebMatrix выполнять код на сервере (соответствующий этой команде или функции). Функция RenderBody просто дает команду WebMatrix представлять контент страницы в этом слое.

Вот как должна выглядеть ваша страница _siteLayout.cshtml:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" />

<title>My Favorite Movies</title> <link rel="stylesheet" type="text/css" href="movies.css" />

</head> <body> <header> <h1>A list of my Favorite Movies</h1>

</header> @RenderBody() <div id=”footer”> <footer>

This site was built using Microsoft WebMatrix.

<a href="http://web.ms/webmatrix">Download it now.</a> </footer> </div> </body> </html>

Когда дело касается страницы, называемой movies.cshtml, которую вы создавали до этого, необходимо использовать редактировать страницы, добавлять теги разметки <div>,<ol> и <li>. Задумайтесь над простым фактом - когда вы просматриваете страницу CSHTML, WebMatrix будет использовать файлы слоев, чтобы определить, как поменять страницу, таким образом, чтобы она содержала CSS и все элементы указанные в соответствующих слоях.

Перед проверкой не забывайте удалять команды @RenderPage ("PageHeader.cshtml") и @RenderPage ("PageFooter.cshtml") из movies.cshtml.

Сообщите WebMatrix, как использовать файл слоев

Теперь, вы, вероятно, думаете: "как он узнает, что необходимо использовать _siteLayout.cshtml для моей страницы movies.cshtml?" Ответ прост - он не делает этого. Мы должны сообщить WebMatrix о необходимости использования данной страницы.

К счастью, это довольно легко сделать.

Если вы создадите страницу под названием _PageStart.cshtml, то эта страница будет проименовываться каждый раз, когда WebMatrix будет запускать страницу CSTHML (или VBHTML).

Хорошо использовать это для установки глобальных переменных или функций. Здесь мы только сообщим webmatrix, что слои для всего сайта будет задаваться в _siteLayout.cshtml.

Двинемся дальше и создадим _PageStart.cshtml.

Замените этот контент следующим:

@{ Layout = "~/_siteLayout.cshtml"; }

Запустите movies.cshtml и посмотрите на нее теперь в браузере.

Веб разработка 101: Часть 4, Использование размещения (окончание)

Если вы попытаетесь запустить свой _siteLayout.cshtml или _PageStart.cshtml, то получите ошибку. Если ошибка появится во время загрузки файла, убедитесь в том, что файл movies.cshtml правильно выбран в каталоге в WebMatrix.

Объединим все это

Так что только произошло? Давайте посмотрим пошагово, что сделал WebMatrix, чтобы загрузить вашу страницу:

  1. Браузер сделал запрос на сервер к movies.cshtml
  2. Сервер увидел, что _PageStart.cshtml существует, таким образом, понял, что использовать её возможно. Использовалась только одна строка кода, которая установила переменную слоя, сообщив о том, что Layout для сайта находится в файле siteLayout.cshtml
  3. Сервер запустил siteLayout.cshtml, чтобы собрать страницу. Использовались теги <head>, <body> а так же CSS в статической странице HTML
  4. Сервер добрался до кода, который содержит @RenderBody (), который выводил контент на страницу movies.cshtml
  5. Сервер получил остальную часть кода от siteLayout.cshtml, завершая страницу.
  6. Полная страница была возвращена браузеру, с полностью смоделированной информацией.

Добавление другой страницы.

Преимущества этого подхода на лицо, и мы можем продемонстрировать это, показав объем работы, который вы должны сделать, чтобы создать другую страницу.

Используя WebMatrix, создайте другую страницу под названием about.cshtml.

Замените весь контент about.cshtml следующим:

<h1>About me</h1>

<h2>I'm the author of this page. I should put something interesting here.</h2>

Теперь посмотрите about.cshtml. Выполнится тот же самый процесс, обрисованный в общих чертах в предыдущем разделе. Кроме этого, когда страница _siteLayout.cshtml достигнет @RenderBody ()и представит контент из вашей страницы about.cshtml, результат будет похож на следующий:

Веб разработка 101: Часть 4, Использование размещения (окончание)

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

Забавно как много можно сделать самостоятельно, в стиле похожем на включаемые области какой-нибудь системы управления контентом (например, 1С-Битрикс ASP.NET) и вставить в WebMatrix.

Заключение

В этой статье вы увидели, как использование встроенного механизма слоев в WebMatrix может облегчить создание сайтов, так как весь код для всех ваших страниц помещается в файлы слоев. Вы создавали свои первые динамические страницы (то есть страницы, которые создавались непрерывно вашим сервером вместо файлов в файловой системе сервера), используя C7gN5dS и синтаксис 'Razor'.

В следующем разделе вы копнете глубже в синтаксис Razor, заменяя статический список фильмов тем, который управляется от базы данных. WebMatrix интегрирует SQL-сервер в компактную базу данных, которая свободно управляется файлом базы данных, как рядом инструментов базы данных для создания и управления баз данных. Вы узнаете, как создавать базу данных, добавлять поля, добавлять данные, и затем писывать код, который будет брать ваши данные и загружать его на страницу каждый раз, когда пользователь вызывает вашу страницу!

К сожалению, эту статью пришлось разбить на 2 урока, однако я надеюсь, что прочитав её окончание вы поняли причину по которой мне пришлось на это пойти - мы использовали два совершенно разных подхода для использования слоём и включаемых областей (даже целых страниц!) в наш сайт.

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

19 декабря

Задойный А.В.


P.S. С каждой следующей статьёй я рассматриваю всё более и более сложные примеры. Возможно кому-то из читателей уже стали непонятны те или иные моменты. Прошу - не молчите - задавайте свои вопросы на форуме - я обязательно отвечу на них и внесу соответствующие правки в текст статьи, если это потребуется.


Веб разработка 101: Часть 4, Использование размещения (окончание)

<p style="text-align: justify; ">В <a href="/information/veb_razrabotka_101_chast_4_ispolzovanie_razmeshcheniya_nachalo/" >первой половине этого урока</a> мы разобрали базовые возможности инструмента 'Razor' для создания страниц. Теперь пришла пора взглянуть на него несколько с иной точки зрения. </p> <h2>Создание страницы размещения</h2> <p style="text-align: justify; ">Мы создали страницу, а затем использовали Razor для автоматического вывода той или иной информации - когда страница отображалась, появлялись заголовок и код нижнего колонтитула. Это называется подход &quot;снизу вверх&quot;.</p> <p style="text-align: justify; ">Другой, и, возможно, более эффективный подход заключён в обратном. Создается Layout (условно будем называть его &quot;слой&quot;, поскольку вы накладываете их последовательно один за другим), который вы используете в качестве шаблона для каждой страницы, и затем вставляете в него определенный контент (какой хотите). Это большое преимущество данного подхода.</p> <p style="text-align: justify; ">Давайте посмотрим, как это работает: создайте новую страницу CSHTML, и назовите ее _siteLayout.cshtml.</p> <p style="text-align: justify; ">Замените контент страницы, которую создавали, на следующий. Это кажется вам знакомым, так как это все и есть содержание страницы default.html, которую вы создавали ранее:</p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); "> &lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;utf-8&quot; /&gt; </span></p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); "> &lt;title&gt;My Favorite Movies&lt;/title&gt; &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;movies.css&quot; /&gt; </span></p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); "> &lt;/head&gt; &lt;body&gt; &lt;header&gt; &lt;h1&gt;A list of my Favorite Movies&lt;/h1&gt; &lt;/header&gt; </span></p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); "> &lt;div id=&quot;movieslist&quot;&gt; &lt;ol&gt; &lt;li&gt;&lt;a href=&quot;#&quot;&gt;It's a wonderful life&lt;/a&gt;&lt;/li&gt; </span></p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); "> &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Lord of the Rings&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;#&quot;&gt;The Fourth World&lt;/a&gt;&lt;/li&gt; </span></p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); "> &lt;li&gt;&lt;a href=&quot;#&quot;&gt;The Lion King&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;div id=”footer”&gt; &lt;footer&gt; </span></p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); ">This site was built using Microsoft WebMatrix</span><span style="background-color: rgb(215, 215, 215); ">.</span></p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); ">&lt;a href=&quot;http://web.ms/webmatrix&quot;&gt;Download it now.&lt;/a&gt; &lt;/footer&gt; &lt;/div&gt; &lt;/body&gt; &lt;/html&gt; </span></p> <p style="text-align: justify; ">Теперь удалите ‘movieslist’ &lt;div&gt; и замените его следующим кодом:</p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); ">@RenderBody()</span></p> <p style="text-align: justify; ">Помните, ранее мы рассказывали, что символ @ дает команду WebMatrix выполнять код на сервере (соответствующий этой команде или функции). Функция RenderBody просто дает команду WebMatrix представлять контент страницы в этом слое.</p> <p style="text-align: justify; ">Вот как должна выглядеть ваша страница _siteLayout.cshtml:</p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); "> &lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;utf-8&quot; /&gt; </span></p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); "> &lt;title&gt;My Favorite Movies&lt;/title&gt; &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;movies.css&quot; /&gt; </span></p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); "> &lt;/head&gt; &lt;body&gt; &lt;header&gt; &lt;h1&gt;A list of my Favorite Movies&lt;/h1&gt; </span></p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); "> &lt;/header&gt; @RenderBody() &lt;div id=”footer”&gt; &lt;footer&gt; </span></p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); "> This site was built using Microsoft WebMatrix. </span></p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); "> &lt;a href=&quot;http://web.ms/webmatrix&quot;&gt;Download it now.&lt;/a&gt; &lt;/footer&gt; &lt;/div&gt; &lt;/body&gt; &lt;/html&gt; </span></p> <p style="text-align: justify; ">Когда дело касается страницы, называемой movies.cshtml, которую вы создавали до этого, необходимо использовать редактировать страницы, добавлять теги разметки &lt;div&gt;,&lt;ol&gt; и &lt;li&gt;. Задумайтесь над простым фактом - когда вы просматриваете страницу CSHTML, WebMatrix будет использовать файлы слоев, чтобы определить, как поменять страницу, таким образом, чтобы она содержала CSS и все элементы указанные в соответствующих слоях.</p> <p style="text-align: justify; ">Перед проверкой не забывайте удалять команды @RenderPage (&quot;PageHeader.cshtml&quot;) и @RenderPage (&quot;PageFooter.cshtml&quot;) из movies.cshtml.</p> <h2>Сообщите WebMatrix, как использовать файл слоев</h2> <p style="text-align: justify; ">Теперь, вы, вероятно, думаете: &quot;как он узнает, что необходимо использовать _siteLayout.cshtml для моей страницы movies.cshtml?&quot; Ответ прост - <b>он не делает этого</b>. Мы должны сообщить WebMatrix о необходимости использования данной страницы.</p> <p style="text-align: justify; ">К счастью, это довольно легко сделать.</p> <p style="text-align: justify; ">Если вы создадите страницу под названием _PageStart.cshtml, то эта страница будет проименовываться каждый раз, когда WebMatrix будет запускать страницу CSTHML (или VBHTML).</p> <p style="text-align: justify; ">Хорошо использовать это для установки глобальных переменных или функций. Здесь мы только сообщим webmatrix, что слои для всего сайта будет задаваться в _siteLayout.cshtml.</p> <p style="text-align: justify; ">Двинемся дальше и создадим _PageStart.cshtml.</p> <p style="text-align: justify; ">Замените этот контент следующим:</p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); "> @{ Layout = &quot;~/_siteLayout.cshtml&quot;; }</span></p> <p style="text-align: justify; ">Запустите movies.cshtml и посмотрите на нее теперь в браузере.</p> <p><img src="/upload/medialibrary/538/5383b07c4bc734353230e7024a9d3a95.PNG" title="Веб разработка 101: Часть 4, Использование размещения (окончание)" border="0" alt="Веб разработка 101: Часть 4, Использование размещения (окончание)" width="700" height="386" /></p> <p style="text-align: justify; ">Если вы попытаетесь запустить свой _siteLayout.cshtml или _PageStart.cshtml, то получите ошибку. Если ошибка появится во время загрузки файла, убедитесь в том, что файл movies.cshtml правильно выбран в каталоге в WebMatrix.</p> <p style="text-align: center; "><b>Объединим все это</b></p> <p style="text-align: justify; ">Так что только произошло? Давайте посмотрим пошагово, что сделал WebMatrix, чтобы загрузить вашу страницу:</p> <p> </p> <ol> <li>Браузер сделал запрос на сервер к movies.cshtml</li> <li>Сервер увидел, что _PageStart.cshtml существует, таким образом, понял, что использовать её возможно. Использовалась только одна строка кода, которая установила переменную слоя, сообщив о том, что Layout для сайта находится в файле siteLayout.cshtml</li> <li>Сервер запустил siteLayout.cshtml, чтобы собрать страницу. Использовались теги &lt;head&gt;, &lt;body&gt; а так же CSS в статической странице HTML</li> <li>Сервер добрался до кода, который содержит @RenderBody (), который выводил контент на страницу movies.cshtml</li> <li>Сервер получил остальную часть кода от siteLayout.cshtml, завершая страницу.</li> <li>Полная страница была возвращена браузеру, с полностью смоделированной информацией.</li> </ol> <p></p> <p>Добавление другой страницы.</p> <p style="text-align: justify; ">Преимущества этого подхода на лицо, и мы можем продемонстрировать это, показав объем работы, который вы должны сделать, чтобы создать другую страницу.</p> <p style="text-align: justify; ">Используя WebMatrix, создайте другую страницу под названием about.cshtml.</p> <p style="text-align: justify; ">Замените весь контент about.cshtml следующим:</p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); ">&lt;h1&gt;About me&lt;/h1&gt; </span></p> <p style="text-align: justify; "><span style="background-color: rgb(215, 215, 215); ">&lt;h2&gt;I'm the author of this page. I should put something interesting here.&lt;/h2&gt; </span></p> <p style="text-align: justify; ">Теперь посмотрите about.cshtml. Выполнится тот же самый процесс, обрисованный в общих чертах в предыдущем разделе. Кроме этого, когда страница _siteLayout.cshtml достигнет @RenderBody ()и представит контент из вашей страницы about.cshtml, результат будет похож на следующий:</p> <p><img src="/upload/medialibrary/278/278a9d5b6e6c3787e2247010522718ab.PNG" title="Веб разработка 101: Часть 4, Использование размещения (окончание)" border="0" alt="Веб разработка 101: Часть 4, Использование размещения (окончание)" width="700" height="386" /></p> <p style="text-align: justify; ">Заметили, что заголовок и нижний колонтитул страницы остались? Теперь, если я хочу отредактировать страницу, я не должен капаться в структуре страницы. Вместо этого достаточно отредактировать контент, который находится в пределах основной части страницы. Это поможет сэкономить вам много времени и усилий в написании кода для ваших сайтов.</p> <p style="text-align: justify; ">Забавно как много можно сделать самостоятельно, в стиле похожем на включаемые области какой-нибудь системы управления контентом (например, 1С-Битрикс ASP.NET) и вставить в WebMatrix.</p> <h2>Заключение</h2> <p style="text-align: justify; ">В этой статье вы увидели, как использование встроенного механизма слоев в WebMatrix может облегчить создание сайтов, так как весь код для всех ваших страниц помещается в файлы слоев. Вы создавали свои первые динамические страницы (то есть страницы, которые создавались непрерывно вашим сервером вместо файлов в файловой системе сервера), используя C7gN5dS и синтаксис 'Razor'.</p> <p style="text-align: justify; ">В следующем разделе вы копнете глубже в синтаксис Razor, заменяя статический список фильмов тем, который управляется от базы данных. WebMatrix интегрирует SQL-сервер в компактную базу данных, которая свободно управляется файлом базы данных, как рядом инструментов базы данных для создания и управления баз данных. Вы узнаете, как создавать базу данных, добавлять поля, добавлять данные, и затем писывать код, который будет брать ваши данные и загружать его на страницу каждый раз, когда пользователь вызывает вашу страницу!</p> <p style="text-align: justify; ">К сожалению, эту статью пришлось разбить на 2 урока, однако я надеюсь, что прочитав её окончание вы поняли причину по которой мне пришлось на это пойти - мы использовали два совершенно разных подхода для использования слоём и включаемых областей (даже целых страниц!) в наш сайт.</p> <p style="text-align: justify; ">В следующей части вы узнаете о создании данных с использованием вашего приложения WebMatrix, создаваемого в функциях управления данными.</p> <p style="text-align: right; ">19 декабря</p> <p style="text-align: right; ">Задойный А.В.</p> <p style="text-align: right; "> <br /> </p> <p style="text-align: justify; "><i><font color="#00a650">P.S.</font> С каждой следующей статьёй я рассматриваю всё более и более сложные примеры. Возможно кому-то из читателей уже стали непонятны те или иные моменты. Прошу - не молчите - задавайте свои </i><a href="/cofe-forum/4/" title="форум о продуктах Microsoft" >вопросы на форуме</a><i> - я обязательно отвечу на них и внесу соответствующие правки в текст статьи, если это потребуется.</i></p>

Возврат к списку

Яндекс.Метрика