Статьи

Написание вашей первой страницы ASP.NET

Это отрывок из нашей последней книги Кристиана Дари, Уайетта Барнетта и Тима Поузи « Создайте свой собственный сайт ASP.NET 4 с использованием C # & VB ».

Для вашего первого упражнения ASP.NET мы создадим простой пример, показанный на рисунке 1.7. Мы пойдем через процесс создания этой страницы шаг за шагом.

рис 1.7

Рисунок 1.7. Увлекательный превью вашей первой страницы ASP.NET!

Чтобы создать эту страницу в Visual Web Developer, вам нужно выполнить несколько простых шагов:

  1. Запустите Visual Web Developer и выберите «Файл»> «Новый веб-сайт» (или нажмите сочетание клавиш по умолчанию, Shift + Alt + N ).
  2. Выберите ASP.NET Web Site для шаблона и Файловую систему для типа местоположения. Этот тип расположения сообщает Visual Web Developer о создании проекта в физической папке на вашем диске и выполнении этого проекта с помощью встроенного веб-сервера.
  3. Выберите язык, на котором вы предпочитаете кодировать свои страницы. Хотя ASP.NET позволяет кодировать разные страницы внутри проекта на разных языках, для простоты мы обычно предполагаем, что вы работаете с одним языком.
  4. Если вы выбрали C # для языка, введите C: LearningASPCS для папки, в которой вы хотите сохранить файлы для этого упражнения. Если вы предпочитаете VB.NET, выберите C: LearningASPVB . Вы можете выбрать любое место, которое вам нравится. На рисунке 1.8 показана версия выбора на C #. Рис 1.8
    Рисунок 1.8. Запуск нового проекта веб-сайта ASP.NET с помощью Visual Web Developer
  5. После нажатия кнопки «ОК» VisualWeb Developer создаст проект вместе с несколькими файлами, чтобы облегчить переход в мир разработки ASP.NET. Ваш проект также поставляется с файлом Site.master, который представляет собой шаблон, автоматически примененный ко всему сайту.

Ваш проект содержит пустую папку App_Data, папку Scripts, которая содержит файлы jQuery, Styles, которая содержит базовую таблицу стилей Site.css, базовый файл Default.aspx и файл базовой конфигурации Web.config — см. Рисунок 1.9.

Мы обсудим все эти файлы в главе 5, а также подробно рассмотрим назначение каталога Account. А сейчас давайте перейдем непосредственно к созданию нашей первой веб-страницы ASP.NET.

Рис 1.9

Рисунок 1.9. Ваш новый проект в Visual Web Developer

Вы можете заметить, что источник HTML отличается от стандартного HTML. Это нормально. Вы также должны заметить, что есть две области контента, одна для «Заголовка контента» и одна для «Основного контента». Опять же, мы немного обсудим шаблоны и мастер-страницы, но давайте немедленно приступим к работе. Для этого мы можем просто перезаписать предоставленный нам образец файла.

Основной панелью интерфейса Visual Web Developer является редактор страниц, в котором вы увидите исходный HTML-код веб-страницы Default.aspx. Измените заголовок страницы на что-то более конкретное, чем Домашняя страница, например, Добро пожаловать на создание собственного веб-сайта ASP.NET 4! :

  <html xmlns = "http://www.w3.org/1999/xhtml">

     <head runat = "server">

         <title> Добро пожаловать в свой собственный сайт ASP.NET 4!

         </ title>

     </ HEAD> 

Загрузка страницы Default.aspx в веб-браузере теперь открывает образец страницы, которая была создана, когда VisualWeb Developer создал проект; это имеет смысл, так как мы не добавляли контент на эту страницу! Поскольку нам не нужна ни одна из примеров страниц, мы просто изменим весь исходный код страницы default.aspx следующим образом:

  <Тело>

         <form id = "form1" runat = "server">

         <DIV>

             <p> Привет! </ p>

             <р>

               Время настало:

               <asp: Label ID = "myTimeLabel" runat = "server" />

             </ р>

         </ DIV>

         </ Форма>

     </ Body>

 </ Html> 

Хотя наша маленькая страница еще не закончена (наша работа с элементом управления Label еще не закончена), давайте запустим страницу, чтобы убедиться, что мы на правильном пути. Нажмите F5 или перейдите в меню «Отладка».

Как работает контроль веб-сервера

Вы только что добавили серверный веб-элемент управления на страницу, добавив на страницу элемент <asp:Label/> . Вы узнаете все об элементах управления веб-сервера в главе 2, но сейчас вам нужно узнать, как работает этот простой элемент управления, чтобы вы могли понять упражнение.

Элемент управления Label является одним из самых простых элементов управления в .NET, который позволяет вставлять динамическое содержимое на страницу. Часть имени тега asp: идентифицирует его как встроенный тег ASP.NET. ASP.NET поставляется с множеством встроенных тегов, и <asp:Label/> , вероятно, является одним из наиболее часто используемых.

Значение runat="server" определяет тег как нечто, что необходимо обработать на сервере. Другими словами, веб-браузер никогда не увидит <asp:Label/> ; когда клиент запрашивает страницу, ASP.NET видит ее и преобразует в обычные HTML-теги перед отправкой страницы в браузер. Мы должны написать код, который скажет ASP.NET заменить этот конкретный тег чем-то значимым для пользователя, загружающего страницу.

В первый раз, когда вы сделаете это, VisualWeb Developer сообщит вам, что ваш проект не настроен для отладки, и предложит внести необходимые изменения в файл конфигурации ( Web.config ) для вас — см. Рисунок 1.10. Подтвердите изменение, нажав ОК .

Рис 1.10

Рисунок 1.10. Включение отладки проекта в Visual Web Developer

Если в Internet Explorer не включена отладка сценариев, вы увидите диалоговое окно, показанное на рисунке 1.11. Установите флажок Больше не показывать это диалоговое окно и нажмите Да .

Рис 1.11

Рисунок 1.11. Включение отладки скриптов в Internet Explorer

После того, как все уведомления удалены, у вас должна появиться страница, подобная той, что показана на рисунке 1.12:

Рис 1.12

Рисунок 1.12. Выполнение вашей первой веб-страницы ASP.NET

Теперь вы можете закрыть окно Internet Explorer. Visual Web Developer автоматически обнаружит это действие и отменит режим отладки, что позволит вам снова начать редактирование проекта. Теперь давайте сделаем что-нибудь с этим элементом управления Label.

Установите в браузере по умолчанию Internet Explorer
При выполнении проекта веб-сайт загружается в стандартный веб-браузер вашей системы. В целях разработки приложений ASP.NET мы рекомендуем настроить VisualWeb Developer на использование Internet Explorer, даже если это не ваш предпочтительный веб-браузер. Мы рекомендуем Internet Explorer, поскольку он лучше интегрируется с функциями отладки .NET и JavaScript в Visual Web Developer. Например, VisualWeb Developer знает, как автоматически прекратить отладку проекта, когда окно Internet Explorer закрыто. Чтобы изменить браузер по умолчанию, который будет использоваться Visual Web Developer, щелкните правой кнопкой мыши корневой узел в обозревателе решений , выберите « Обзор с помощью» , выберите браузер на вкладке « Браузеры » и нажмите « Установить по умолчанию» .

Для нашей первой динамической веб-страницы, использующей ASP.NET, давайте напишем некоторый код, который будет отображать текущее время внутри элемента управления Label. Это может показаться не очень захватывающим, но это только для целей этой простой демонстрации; не волнуйтесь, мы скоро доберемся до хороших вещей. Чтобы программно манипулировать элементом управления Label, вам придется написать код на C # или VB.NET, в зависимости от языка, который вы выбрали при создании проекта. Как было предложено ранее в этой главе, ASP.NET позволяет веб-формам (страницам .aspx) содержать код C # или VB.NET или они могут использовать отдельные файлы — файлы с выделенным кодом — для хранения этого кода. Файл Default.aspx, который был сгенерирован для вас при создании проекта, был создан с файлом codebehind, и мы хотим отредактировать этот файл сейчас. Есть много способов открыть этот файл. Вы можете щелкнуть значок « View Code в верхней части окна обозревателя решений , щелкнуть правой кнопкой мыши файл Default.aspx в обозревателе решений и выбрать « Просмотреть код» или щелкнуть символ «+», чтобы развернуть запись Default.aspx . Независимо от того, как вы открываете этот файл, он должен выглядеть как на рисунке 1.13, если вы используете C #, или на рисунке 1.14, если вы используете VB.NET.

Рис 1.13

Рисунок 1.13. Default.aspx.cs в Visual Web Developer
C #, VB.NET и Visual Web Developer
Вначале вы можете быть немного встревожены тем, что шаблон файла code-behind, который VisualWeb Developer создает для файла Default.aspx в новом проекте, когда вы используете C #, полностью отличается от того, который он генерирует, когда вы ‘ Вы используете VB.NET. Они основаны на одной платформе и используют одни и те же типы данных и функции, поэтому C # и VB.NET в основном очень похожи. Однако между синтаксисом языков все еще существуют большие различия. VB.NET часто предпочитают новички, потому что его синтаксис воспринимается проще для чтения и понимания, чем C #. Хотя различия могут пугать изначально, после того, как мы обсудим их детали в главе 3, вы поймете, что и то, и другое может быть относительно легко понять.

Рис 1.14

Рисунок 1.14. Default.aspx.vb в Visual Web Developer

Глядя на рисунок 1.13 и рисунок 1.14, вы можете увидеть, что версия C # содержит определение для метода с именем Page_Load , а версия VB.NET — нет. Это метод, который выполняется автоматически при выполнении проекта, и мы хотим использовать его для написания кода, который будет отображать текущее время внутри Label управления Label .

Если вы используете VB.NET, вам сначала нужно сгенерировать метод Page_Load . Самый простой способ заставить Visual Web Developer сгенерировать Page_Load для вас — открыть Default.aspx, а не его файл с выделенным кодом, и переключиться в представление Design (как показано на рисунке 1.15). Если дважды щелкнуть пустое место в форме, в файле с выделенным кодом для Default.aspx будет создан пустой метод Page_Load .

Рис 1.15

Рисунок 1.15. Default.aspx в представлении «Дизайн» в Visual Web Developer

Теперь измените метод Page_Load так, чтобы он выглядел следующим образом, выбрав версию, которая соответствует выбранному вами языку:

Visual Basic LearningASPVBDefault.aspx.vb (отрывок)
Частичный класс _Default
Наследует System.Web.UI.Page
Protected Sub Page_Load (ByVal sender As Object,
➥ ByVal e As System.EventArgs)
Ручки Me.Load
myTimeLabel.Text = DateTime.Now.ToString ()
End Sub
Конечный класс

C # LearningASPCSDefault.aspx.cs (отрывок)
открытый частичный класс _Default: System.Web.UI.Page
{
защищенная пустота Page_Load (отправитель объекта, EventArgs e)
{
myTimeLabel.Text = DateTime.Now.ToString ();
}
}

C # чувствителен к регистру
C #, в отличие от VB, чувствителен к регистру. Если вы неправильно введете регистр букв, страница не загрузится. Если эти языки выглядят сложными, не беспокойтесь: вы узнаете о них больше в Главе 3.

Если вы никогда ранее не занимались программированием на стороне сервера, код может выглядеть немного страшно. Но прежде чем мы проанализируем это подробно, давайте загрузим страницу и проверим, работает ли она по-настоящему. Чтобы увидеть динамически генерируемый контент веб-страницы во всей красе, нажмите F5, чтобы снова выполнить проект, и посмотрите текущую дату и время, как показано на рисунке 1.16.

Рис 1.16

Рисунок 1.16. Загрузка Default.aspx с элементом Label с динамически генерируемым содержимым

Обе версии страницы достигают одного и того же. Вы даже можете сохранить их обоих, присвоив каждому отдельное имя файла, и протестировать их по отдельности. В качестве альтернативы вы можете создать два проекта Visual Web Developer — один для кода C # в C: LearningASPCS и один для кода VB.NET в C: LearningASPVB .

Нет времени?
Если время не отображается на странице, скорее всего, вы открыли файл прямо в браузере, а не загружали его через веб-сервер. Поскольку ASP.NET является языком на стороне сервера, ваш веб-сервер должен обработать файл, прежде чем он будет отправлен в ваш браузер для отображения. Если он не получает доступа к файлу, код ASP.NET никогда не преобразуется в HTML, который может понять ваш браузер, поэтому убедитесь, что вы загружаете страницу, выполняя ее в Visual Web Developer. Загрузка страницы в браузере напрямую из Windows Explorer не будет выполнять код, и, следовательно, время не будет отображаться.

Так как же работает код? Давайте разберем некоторые элементы, которые составляют страницу. Мы определяем метод под названием Page_Load на обоих языках:

Visual Basic LearningASPVBDefault.aspx.vb (отрывок)
Protected Sub Page_Load (ByVal sender As Object,
➥ ByVal e As System.EventArgs)
Ручки Me.Load

C # LearningASPCSDefault.aspx.cs (отрывок)
защищенная пустота Page_Load (отправитель объекта, EventArgs e)
{

Я не буду вдаваться в подробности здесь. На данный момент все, что вам нужно знать, это то, что вы можете написать фрагменты сценария, которые запускаются в ответ на различные события, такие как нажатие кнопки или выбор элемента из раскрывающегося списка. В основном первая строка кода гласит: «Выполняйте следующий скрипт всякий раз, когда страница загружается».

Обратите внимание, что C # группирует код в блоки с фигурными скобками ({и}), тогда как Visual Basic использует такие операторы, как End Sub, чтобы отметить конец определенной последовательности кода. Таким образом, фигурная скобка ({) в приведенном выше коде C # обозначает начало сценария, который будет выполняться при первой загрузке страницы.

Вот строка, которая фактически отображает время на странице:

Visual Basic LearningASPVBDefault.aspx.vb (отрывок)
myTimeLabel.Text = DateTime.Now.ToString ()

C # LearningASPCSDefault.aspx.cs (отрывок)
myTimeLabel.Text = DateTime.Now.ToString ();

Как видите, эти языки .NET имеют много общего, поскольку оба они построены на .NET Framework. Фактически, единственное различие между способами обработки этих строк двумя языками состоит в том, что в C # строки кода заканчиваются точкой с запятой (;).

Проще говоря, вот что говорит эта строка:

Установите текст myTimeLabel для текущей даты и времени, выраженный в виде текста

Обратите внимание, что myTimeLabel — это значение, которое мы myTimeLabel для атрибута id <asp:Label/> где мы хотим показать время. Таким образом, myTimeLabel.Text или свойство Text myTimeLabel относится к тексту, который будет отображаться тегом. DateTime — это класс, встроенный в .NET Framework; это позволяет вам выполнять все виды полезных функций с датами и временем. .NET Framework имеет тысячи таких классов, которые делают бесчисленные удобные вещи. Классы вместе известны как библиотека классов .NET Framework .

Класс DateTime имеет свойство Now , которое возвращает текущую дату и время. Это свойство Now имеет метод ToString , который выражает эту дату и время в виде текста (сегмент текста называется строкой в кругах программирования). Классы, свойства и методы: все это важные слова в словаре любого программиста, и мы обсудим их более подробно чуть позже в книге. На данный момент все, что вам нужно убрать из этого обсуждения, это то, что DateTime.Now.To-String() предоставит вам текущую дату и время в виде текстовой строки, которую затем вы можете указать своему тегу <asp:Label/> отобразить.

Остальная часть блока скрипта просто связывает свободные концы. End Sub в коде VB и символ} в коде C # отмечают конец сценария, который должен быть запущен при загрузке страницы:

Visual Basic LearningASPVBDefault.aspx.vb (отрывок)
End Sub

C # LearningASPCSDefault.aspx.cs (отрывок)
}

И последнее, что стоит изучить, — это код, сгенерированный для вас ASP.NET. Теперь ясно, что ваш веб-браузер получает только HTML (без серверного кода!), Так какой тип HTML был сгенерирован для этой метки? Ответ легко найти! Со страницей, отображаемой в вашем браузере, вы можете использовать функцию просмотра исходного кода браузера для просмотра HTML-кода страницы. В середине источника вы увидите что-то вроде этого:

  <! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN"
    "Http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns = "http://www.w3.org/1999/xhtml">

     <Голова>

         <Название>

           Добро пожаловать на создание собственного веб-сайта ASP.NET 4!

         </ Title>

     </ HEAD>

     <Тело>

         <form name = "form1" method = "post" action = "Default.aspx" id = "form1">

         <DIV>

           <input type = "hidden" name = "__ VIEWSTATE" id = "__ VIEWSTATE" value = "  " />

         </ DIV>

         <DIV>

           <p> Привет! </ p>

           <Р>

             Время настало:

             <span id = "myTimeLabel"> 13.05.2008 15:10:38 </ span>

           </ Р>

         </ DIV>

         </ Форма>

     </ Body>

 </ Html> 

Обратите внимание, что весь код ASP.NET исчез? Даже <asp:Label/&gt ; тег был заменен тегом <span> (который имеет тот же атрибут id, что и <asp:Label/> мы использовали), который содержит дату и время. Существует загадочный скрытый элемент ввода с именем __VIEWSTATE который используется ASP.NET для определенных целей, но пока мы его игнорируем. (Не волнуйтесь, мы обсудим это чуть позже в книге!)

Вот как работает ASP.NET. С точки зрения веб-браузера, в странице ASP.NET нет ничего особенного; это просто обычный HTML, как и любой другой. Весь код ASP.NET выполняется вашим веб-сервером и преобразуется в обычный HTML, который отправляется в браузер. Пока все хорошо, но приведенный выше пример был довольно простым. Следующая глава будет немного более сложной, поскольку мы исследуем некоторые ценные концепции программирования.

Получать помощь

При разработке веб-приложений ASP.NET у вас, несомненно, возникнут вопросы, требующие ответов, и проблемы, которые необходимо решить. Помощь под рукой — Microsoft разработала веб-сайт поддержки ASP.NET . Этот портал предоставляет полезную информацию для сообщества ASP.NET, такую ​​как новости, материалы для загрузки, статьи и дискуссионные форумы. Вы также можете задавать вопросы опытным участникам сообщества на форумах .

Резюме

В этой главе вы узнали о .NET, в том числе о преимуществах ASP.NET и о том, что он является частью .NET Framework. Сначала мы рассмотрели компоненты ASP.NET. Затем мы исследовали программное обеспечение, которое требуется не только для использования этой книги, но и для развития ASP.NET.

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

Как это? Взгляните на книгу: Создайте свой собственный сайт ASP.NET 4 с помощью C # и VB .