
- •Начальное руководство по разработкеweb-приложений и asp.Net.
- •Разработка web-приложений и asp.Net
- •Web-приложения и web-серверы
- •Что такое виртуальные каталоги?
- •Структура документа html
- •Форматирование текста средствами html
- •Заголовки html
- •Html-редактор Visual Studio.Net
- •Разработка форм html
- •Создаем пользовательский интерфейс
- •Добавление изображений
- •Клиентские скрипты
- •Пример клиентского скрипта
- •Реализация проверки введенных пользователем данных
- •Передаем данные формы (методы geTиPost)
- •Синтаксис строки запроса http
- •Создание классической страницы asp
- •Принимаем данные, переданные методом post
- •Первое приложение asp.Net
- •Некоторые проблемы классических asp
- •Некоторые преимущества asp.Net
- •Пространства имен asp.Net
- •Наиболее важные типы пространства имен System.Web
- •Приложение и сеанс подключения пользователя
- •Создание простого web-приложения на с#
- •Исходный файл *.Aspx
- •Файл web.Config
- •Исходный файл Global.Asax
- •Простой код asp.Net на с#
- •Архитектура web-приложения asp.Net
- •Тип System.Web.Ui.Page
- •Связка *.Aspx/Codebehind
- •Свойство Page. Request
- •Свойство Page.Response
- •Свойство Page.Application
- •Отладка и трассировка приложений asp.Net
- •Элементы управления WebForm
- •Создание элементов управления WebForm
- •Иерархия классов элементов управления WebForm
- •Виды элементов управления WebForm
- •Базовые элементы управления WebForm
- •Группа переключателей
- •Текстовое поле для ввода нескольких строк с полосой прокрутки
- •Элементы управления с дополнительными возможности
- •Элемент управления Calendar
- •Элемент управления AdRotator (баннерная рулетка)
- •Элемент управления для работы с источниками данных
- •Элемент управления DataGrid
- •Еще немного об источниках данных
- •Элементы управления для проверки вводимых пользователем данных
- •Обработка событий элементов управления WebForm
- •Подведение итогов
- •Web-cлужбы
Файл web.Config
Файл web.config — это текстовый файл в формате XML, который используется для определения множества параметров нашего web-приложения. Обычно этот файл расположен в корне виртуального каталога и используется для каждого подкаталога. По умолчанию в него помещается информация о компиляции, ошибках, безопасности, отладке и глобализации (рис. 14.32). Кроме того, в него могут быть помещены и другие необходимые нам данные.
Рис. 14.32. Файл web.config позволяет настроить основные параметры нашего web-приложения
Исходный файл Global.Asax
Как и в классических ASP, в ASP.NET используется глобальный файл (global.asax), который позволяет взаимодействовать с событиями как уровня всего приложения, так и уровня сеанса подключения. Кроме того, этот файл делает возможным совместное использование различных общих данных. Если мы щелкнем на этом файле в окне Solution Explorer правой кнопкой мыши и в контекстном меню выберем View Code, то сможем просмотреть эту информацию, которая представлена при помощи класса Global. Этот класс является производным от базового класса HttpApplication:
public class Global : System.Web.HttpAppiication
{
protected void Application_Start(Object sender. EventArgs e) {}
protected void Session_Start(Object sender, EventArgs e) {}
protected void Application_BeginRequest(Object sender, EventArgs e) {}
protected void Application_EndRequest(Object sender, EventArgs e) {}
protected void Session_End(Object sender, EventArgs e) {}
protected void Application_End(Object sender, EventArgs e) {}
}
В некоторых отношениях класс Global действует как промежуточное звено между внешним клиентом и Web Form. Если вы работали с классическими ASP, то многие из этих событий будут вам знакомы. В общем можно сказать, что эти события позволяют нам реагировать на запуск и прекращение работы как web-приложения в целом, так и отдельных сеансов подключения.
Простой код asp.Net на с#
Если мы сейчас обратимся по адресу нашего web-приложения, то среда выполнения ASP.NET вернет пустую страницу. Давайте исправим эту ситуацию и изменим содержание файла default.aspx таким образом, чтобы нам возвращалась информация о произведенном запросе HTTP (свойство System.Web.UI.Page.Response нам предстоит вскоре рассмотреть более подробно):
<body MS_POSITIONING="GridLayout">
<h1>
<b>I am:</b>
</h1>
<%=this.ToString() %>
<h1>
<b>You are:</b> <%=Request.ServerVariables["HTTP_USER_AGENT"] %>
<form method="post" runat="server" ID="Form1">
</form>
</body>
Откомпилируем проект и запустим его на выполнение. Нам вернется страница HTML (рис. 14.33), с информацией о браузере, из которого был отправлен запрос, а также о сущности, которая этот запрос приняла (то есть просто имя страницы ASP.NET).
Рис.
14.33.
Кто есть кто в ASP.NET
Все выглядит очень похоже на работу с классическими ASP. Однако есть и существенные отличия. Например, Request — это теперь свойство объекта, производного от Page. Кроме того, в тегах <%...%> теперь находится не код языка скриптов, а полноценный код С#:
<hl><b>I am: </b> <%=this.ToString() %></h1>
Архитектура web-приложения asp.Net
Теперь, когда у нас уже есть опыт создания очень простого приложения ASP.NET, пора разобраться с основными особенностями архитектуры ASP.NET в целом. Как мы помним, среда выполнения поместила в исходный скриптовый блок на нашей странице следующий блок с таинственным атрибутом Codebehind:
<%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="FirstWebApplication.WebForm1" %>
Главное различие между классическими ASP и ASP.NET заключается в том, что страница *.aspx, которую запрашивает внешний клиент, представлена уникальным классом С#, на который и указывает атрибут Codebehind. Когда клиент запрашивает страницу, среда выполнения ASP.NET создает объект этого класса. Этот файл не показывается в окне Solution Explorer. Чтобы его открыть, необходимо щелкнуть правой кнопкой мыши на уже открытом файле *.aspx и в контекстном меню выбрать View Code. Изначально содержимое этого файла выглядит следующим образом:
namespace FirstWebApplication
{
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
public class WebForm1 : System.Web.UI.Page
{
public WebForm1()
{
Page.Init =+ new System.EventHandler(Page_Init);
}
protected void Page_Load(object sender. System.EventArgs e)
{
// Добавляем пользовательский код для инициализации страницы
}
protected void Page_Init(object sender, EventArgs e)
{
InitializeComponent();
}
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
}
}
Как мы видим, исходный код очень простой. Конструктор класса устанавливает обработчик события для события Init. Реализация этого обработчика вызывает метод InitializeComponent(), который, в свою очередь, устанавливает обработчик события Load.