Участник:Ahmetova/Обучающий курс «Создание веб - приложения Visual Studio на основе ASP.NET»

Материал из Викиучебника — открытых книг для открытого мира

Создания Web сайта на локальном компьютере

Мы рассмотрим создание сайтов на локальном компьютере и их отладке с использованием локального Web-сервера. Хотя, существенного отличия в локальной и удаленной разработке сайтов нет, но, выбираемый большинством разработчиков путь, дает Вам несомненные преимущества - возможность пошаговой отладки кода приложения, и независимость от сервера приложений. Запустим Microsoft Visul C# Net и создадим новый Web сайт. (File/New/Web Site). В окне Templates диалогового окна "New Web Site" задаем "ASP.NET Web Site". В окне" Location" выбираем File System, с помощью кнопки Browse определяем папку, где будем создавать все наши сайты. В выбранной папке будет создана новая папка с именем нашего сайта (WebSite1). Не забудем выбрать Language и нажимаем "OK". Сайт создан.

Сайт на данном этапе представляет собой два файла: Default.aspx и Default.aspx.cs. Файл Default.aspx определяет HTML содержимое сайта, а Default.aspx.cs - программный код, который отделен от HTML содержимого и предназначен для программного формирования данного содержимого или выполнения каких либо иных действий на сервере. Эта связь определена в директиве Page через свойство CodeFile.

<%@ Page Language="C#" AutoEventWireup="true"

 CodeFile="Default.aspx.cs" Inherits="_Default" %>

Рассмотрим связанный код файла Default.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{ protected void Page_Load(object sender, EventArgs e)

{}

}

Код состоит из одного класса _Default, наследника класса System.Web.UI.Page. Имя класса также присутствует в директиве Page файла Default.aspx - Inherits="_Default";
Для того, чтобы убедиться, что это Web сайт, нажмем кнопочку F5(меню Debug\Start Debugging). Отладчик предложит создать файл Web.config, после подтверждения согласия стартует локальный Web Server, иконка которого помещается в системный трэй, а решение отобразится в Web Browser.

Жизненный цикл страницы

И хотя наш сайт пуст, но он уже "ведет насыщенную жизнь". Для того, чтобы убедиться в этом, добавим в директиву Page свойство Trace="true" (Директива Page имеет множество свойств, о которых мы будем вести речь по мере их востребования). Вновь нажимаем F5.
Мы видим множество событий, которые произошли при отображении даже пустой страницы. При создании страницы одно из событий (Load) оформляется как метод класса (Page_Load). Однако разработчику доступны и еще четыре события: PreInit, Init, PreRender, Unload. Для каждого из них в класс может быть включен метод его обработки. Кроме того, разработчику будут доступны и события дочерних элементов управления, которые возникают между событиями Load и PreRender страницы. Это следует хорошо запомнить (к этому мы вернемся в следующем параграфе).

Добавление функциональности сайту

На данном этапе наш сайт работоспособен. Добавим на сайт несколько контролов. В окне дизайнера формы (вкладка Designe файла Default.aspx) или на вкладку Source (в отличие от Visual Studio 2003) мы можем перетащить доступные визуальные контролы из окна Toolbox с любой его вкладки, например, Button и Label с вкладки Standart.
После добавления контрола можно посмотреть и установить его свойства, воспользовавшись его контекстным меню и вызвав окно свойств (пункт Properties) или задать события для обработки, перейдя на вкладку Events окна Properties и кликнув мышкой в окошечке рядом с именем события. Напомним, что двойной клик по самому контролу вызывает его наиболее часто (по мнению разработчиков) востребованное событие (для кнопки это OnClick и обработчик события Button_Click).
В файле Default.aspx.cs добавим (напишем по образцу метода Page_Load) методы Page_PreInit, Page_Init, Page_PreRender, Page_Unload. Создадим событие Button1_Click, Button1_Init, Button1_Load, Button1_PreRender, Button1_Unload (методы для обработки событий пишутся для страницы, а для контролов создаются, а не пишутся, иначе в файле Default.aspx контрол будет не связан с событием).

Файл Default.aspx (его содержимое между тэгами Body) примет вид:
<asp:Content ID="HeaderContent"runat="server"ContentPlaceHolderID="HeadContent"> </asp:Content>
<asp:Content ID="BodyContent"runat="server"ContentPlaceHolderID="MainContent">

Добро пожаловать

<asp:Button ID="Button1" runat="server" Text="Button"
OnClick="Button1_Click"
OnInit="Button1_Init"
OnLoad="Button1_Load"
OnPreRender="Button1_PreRender"
OnUnload="Button1_Unload"/>

<asp:Label ID="Label1" runat="server" Text="Label" EnableViewState="true"></asp:Label>

</asp:Content>
Наполним содержанием методы событий. Поставим целью показать не только возможности вывода текста на страницу, но и возможности изменения свойств элементов управления на различных этапах жизненного цикла страницы. Будем исследовать свойство Text элемента управления Label. Для контрола Label сначала установим свойство EnableViewState в true (по умолчанию), а затем в false и проанализируем результаты функционирования кода.

protected void Button1_Init(object sender, System.EventArgs e)
{

if (!IsPostBack)
{ Label1.Text += "Вызов метода Button1_Init при первой загрузке страницы.
"; }

else

{ Label1.Text += "Вызов метода Button1_Init при повторной загрузке страницы.
"; }

}
protected void Button1_Load(object sender, System.EventArgs e)
{ if (!IsPostBack)

{     Label1.Text += "Вызов метода Button1_Load при первой загрузке страницы.
"; }

else

{     Label1.Text += "Вызов метода Button1_Load при повторной загрузке страницы.
"; }

}
protected void Button1_Click(object sender, System.EventArgs e)
{ Label1.Text += "Вызов метода Button1_Click.
";}

protected void Button1_PreRender(object sender, EventArgs e)
{ if (!IsPostBack)
{ Label1.Text += "Вызов метода Button1_PreRender при первой загрузке страницы.
"; }

else

{     Label1.Text += "Вызов метода Button1_PreRender при повторной загрузке страницы.
"; }

}
protected void Button1_Unload(object sender, EventArgs e)
{ Label1.Text += "Этого Вам не видать никогда:
";

   Label1.Text += "Вызов метода Button1_Unload - страница загружена, изменить ничего нельзя.
";

}
Свойство страницы IsPostBack равно false только при первом вызове страницы. Выполним решение (F5).
Из анализа функционирования данного кода видно:
• Событие PreInit фиксирует этап начала персонализации и формирования страницы в целом. У дочерних элементов это событие не возникает. В обработчике Page_PreInit можно устанавливать шаблоны и темы оформления, изменять свойства элементов. При повторном вызове страницы обработчик данного события также вызывается, но его действие не изменит свойства элементов, у которых установлено свойство EnabledViewState в true.

• Событие Init - начало рекурсивной инициализации содержания дочерних элементов страницы. Событие Init дочерних элементов вызывается ранее события Init страницы. Для событий Init дочерних элементов могут быть созданы собственные обработчики события (например, Button1_Init). В Page_Init возможно считывать и инициализировать свойства всех дочерних элементов. При повторном вызове страницы обработчики данного события также вызывается, но их действие, как и в PreInit, не изменит свойства элементов, у которых установлено свойство EnabledViewState в true.

• Событие Load возникает как для страницы, так и для дочерних элементов. События дочерних элементов возникают позже чем событие загрузки страницы (в отличии от событий Init). На этом этапе доступны все свойства элементов управления, не зависимо от свойства EnableViewState.

• Событие PreRender возникает тогда, когда начинается проверка создания всех элементов страницы. Это последняя возможность внести изменения в свойства страницы и ее элементов.

• Событие Unload - начало освобождение занятых ресурсов (закрытие файлов, открытых соединений с базой и т.п.). Свойства страницы на данном этапе недоступны.

Установка Web сайта на сервер

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

Этап 1. Настройка IIS для работы с сайтом

Для функционирования Web сайтов на Вашем локальном компьютере (не только данного сайта) должна быть установлена служба IIS. IIS при установке Windows обычно по умолчанию не устанавливаются. Установить IIS или выбрать дополнительные компоненты можно с помощью приложения "Установка и удаление программ" панели управления Windows. Чтобы установить IIS, добавить или удалить компоненты, нажимаем кнопку "Пуск", "Настройка", выбираем "Панель управления", "Установка и удаление программ". Открываем вкладку "Добавление и удаление компонентов Windows" и ставим галочку напротив Internet Information Serveces (IIS).
Далее следуем появляющимся на экране инструкциям для установки, удаления или добавления компонентов IIS. При установке компьютер может потребовать у вас установочный диск. После установки программы на компьютере создаем новый веб-узел.
Следуем инструкциям. На вкладке «Введите IP-адрес для веб-узла» выбираем тот IP-адрес, который соответствует нашему серверу.В окне «Домашний каталог веб-узла» мы указываем путь к корневому каталогу, а в окне «Разрешения на доступ к веб-узлу» отметим галочками те разрешения, которые нам будут нужны.Нажимаем кнопку «Готово», и наш веб-узел создан.Теперь для нашего веб-узла вызываем «Свойства». Во вкладках «Веб-узел», «Документы» и «ASP.NET» меняем настройки. На вкладке «ASP.NET» выбираем ту версию ASP.NET, на которой вы работаете, в нашем случае это версия 4.0.30319.
Теперь чтобы наш узел заработал, нам нужно на веб - узле «Администрирование» расширить веб- узел «webs», так как без этого он не будет доступен с других компьютеров нашей локальной сети.
Далее следует зарегистрировать наш «Webs» в DNS службе. Для этого мы заходим «Пуск», «Панель управления», «Администрирование», «Службы DNS», и добавляем новый веб-узел, IP-адрес указываем тот, который соответствует нашему серверу.
После того, как мы добавили новый узел, создаем виртуальный каталог для «Webs» с помощью FTP: для этого снова открываем «Диспетчер служб IIS», находим вкладку «Узлы FTP» и создаем новый узел.Далее следуем инструкциям.

После всех сделанных настроек, вызываем страничку из браузера.

Основы создания Web сайтов