Знакомство с ASP.NET

Создание веб-приложения ASP.NET и страницы веб-приложения. Технология создания веб-приложений и веб-сервисов от корпорации Microsoft. Модификация веб-приложения ASP.NET: реализация различной функциональности. Модификация веб-приложения ASP.NET: AJAX.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 24.04.2017
Размер файла 2,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Лабораторная работа

Знакомство с ASP.NET

Вводная часть

В этой работе будет рассмотрена работа сподтипом приложений доступных для создания в VisualStudio 2010, а именно: Веб-приложениеASP.NET.

ASP.NET -- технология создания веб-приложений и веб-сервисов от корпорацииMicrosoft. Она является составной частью платформы Microsoft .NET и развитием более старой технологии Microsoft ASP.На данный момент последней версией этой технологии является ASP.NET 4.0. Однако в текущих бета-версия следующей ОС Windows 8 присутствует ASP.NET 4.5.

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

ASP.NET не является платформой.

ASP (ActiveServerPages -- «активные серверные страницы») -- первая технология Microsoft, позволяющая динамически создавать веб-страницы на стороне сервера. ASP работает на операционных системах линейки Windows NT и на веб-сервере Microsoft IIS.

ASP не является языком программирования -- это лишь технология предварительной обработки, позволяющая подключать программные модули во время процесса формирования веб-страницы. Относительная популярность ASP основана на простоте используемых языков сценариев (VBScript или JScript) и возможности использования внешних COM-компонентов.

Итак: ASP.NET -- это веб-платформа, предоставляющая все необходимые службы для создания серверных веб-приложений корпоративного класса.ASP.NET создана на основе платформы .NET Framework, поэтому все функции .NET Framework доступны для приложений ASP.NET. Приложения могут быть написаны на любом языке, совместимом со средой CLR, включая, конечно же, C#.

Средства и параметры Visual Studio, предназначенные для создания веб-приложений, в совокупности именуются Visual Web Developer.Кроме того, имеется бесплатный самостоятельный продукт Visual Web Developer Express, который включает в себя базовый набор функций веб-разработки, реализованных в Visual Studio.

С помощью Visual Studio 2010 можно создавать различные типы проектов ASP.NET, в том числе веб-сайты, веб-приложения, веб-службы и серверные элементы управления AJAX (AsynchronousJavaScriptandXML -- «асинхронный JavaScript и XML»).

Между проектами веб-сайтов и проектами веб-приложений существует разница. Некоторые функции, такие как MVC (Model-View-Controller-- «Модель-представление-поведение», «Модель-представление-контроллер») и некоторые средства автоматизации веб-развёртывания, работают только с проектами веб-приложений. Другие функции, такие как платформы динамических данных, работают как с проектами веб-сайтов, так и проектами веб-приложений. В данной лабораторной работе будет создан проект именно веб-приложения. Веб-приложение -- (на взгляд автора лабораторной работы) наиболее удобный тип проекта для создания сайтов.

Что же такое, «веб-приложение»?

С точки зрения пользователя, открывшего браузер и перешедшего на веб-сайт, всё веб-приложение для него: веб-страница. То есть пользователя не нужно знать, как и на чём написана страница в браузере. Главное для него, разумеет содержимое.

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

Требования к системе для просмотра веб-страниц ASP.NET:

1. Установленный .NET Framework.

2. IIS версии не ниже 6.0.

Преимущества ASP.NET:

1. ASP.NET скрипты компилируются, а не интерпретируются. Веб-приложения написанные на .NET это набор скриптов, которые выполняются на виртуальной машине .NETFramework, то есть для работы приложений на ASP.NET кроме самого веб сервера необходим ещё и .NET Framework. Таким образом: при первом обращении к приложению идёт компиляция скриптов в файлы *.dll, а далее и их исполнение «фреймворком». При последующем обращении идет просто вызов DLL тем самым увеличивается быстродействие по сравнению с другими скриптовыми языками, которые интерпретируются интерпретатором каждый раз запросе.

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

2. Отделение кода. Благодаря тому что дизайн сайта находится (может находиться) в файле отдельном от кода приложения, программисты и дизайнеры могу работать одновременно над одним проектом и не сталкиваться между собой по вопросам кода. Тем самым код становится чистым и понятным. Такая технология называется Code Behind.

3. Настоящий отладчик. В отличие от других веб-языков, при разработке на ASP.NETне придётся после каждой строчки делать вывод в журнал или на HTTP-запрос. Достаточно только включить директиву трассировки и вся доступная информация будет на экране. Используя Visual Studio возможно пошаговое выполнение приложения.

4. Как уже отмечалось выше, используя ASP.NET возможно писать приложения на различных языках, благодаря тому что .NET является мультиязыковой технологией.

5. Развёртывание. Развёртывание приложения подразумевает лишь копирование файлов на сервер. Причём все настройки приложения хранятся в XML файле и ничего не придётся настраивать дополнительно.

Файлы ASP.NET и дополнительных файлов, что могут быть использованы в веб-приложении данной лабораторной работы:

*.asax-- файл обработчик событий приложения и сессий.

*.ascx-- пользовательские элементы управления.

*.asmx-- веб-сервисы.

*.aspx-- сами страницы.

*.config-- файлы настроек.

*.cs-- файл с кодом C# для страниц ASP.NET.

*.js--файл скриптов JSrciptи JavaScript.

*.css--файл стилей для HTML-представления веб-страниц.

Дополнительные сведенияо ASP.NETможно получить в разделе ASP.NET и Visual Web Developer (http://msdn.microsoft.com/ru-ru/library/dd566231.aspx) на странице

ASP.NET 4 (http://msdn.microsoft.com/ru-ru/library/ee532866.aspx).

Что будет представлять из себя приложение, разрабатываемое в данной лабораторной работе?

Рассмотрим самые простые примеры работы с веб-приложением ASP.NET. Разделим данную работу на три части.

Перед началом работы, рассмотрим процесс создания веб-приложения и новой страницы с элементами для него, а также рассмотрим основные особенности работы с данным типом приложений.

В первой ...

Во второй ...

Третья часть работы рассмотрим совместное использование ASP.NETи AJAXна некоторых простых примерах, таких как:

веб приложение страница сервис

1. Создание веб-приложения ASP.NET

Запускаем Visual Studio 2010, откроется Начальная страница:

Для начала, надо создать проект, для этого выполним последовательно: Файл ->Создать ->Проект… (также можно просто нажать сочетание клавиш Ctrl+Shift+N или пункт «Создать проект…» на Начальной странице):

Рис. 2.1 Создание нового проекта

Выберем слева в пункте Установленные шаблоны язык VisualC#, далее нажмём на Веб и найдём в списке справа Веб-приложение ASP.NET. Также здесь можно выбрать какой использовать «фреймворк» (набора компонентов для написания программ). В нашем случае выберем .NETFramework 4.

Рис. 2.2 Окно создания нового проекта

В поле Имя вводим LWP18ASPNET-- это название программы (выбрано по названию лабораторного практикума, номеру и названию работы). В поле Расположение указана конечная директория, где будет находиться весь проект. Выберем расположение удобное для быстрого поиска. В поле Имя решения вводится либо название программы «по умолчанию» из поля Имя автоматически, либо можно ввести своё собственное. Под этим именем будет создана конечная папка проекта (если Имя и Имя решения разные).

Рис. 2.3 Вводим данные нового проекта веб-приложения ASP.NET

После нажатия кнопки ОК (рисунок 2. 3), среда разработки сформирует один полноценный проект веб-приложения (шаблон ASP.NET 4):

Рис. 2.4 Обозреватель решений: состав проектавеб-приложения ASP.NETсформированного средой разработки

Теперь, можно откомпилировать созданную программу, нажав клавишу F5 (Отладка ->Начать отладку или нажав на иконку. Тем самым мы запускаем приложение в режиме отладки (и производим компиляцию debug-версии программы) (Debug выбрано изначально). Перед компиляцией обратим вниманием на директорию App_Dataвеб-проекта. Директория пока что пуста.

Рис. 2.5 Запуск веб-приложения ASP.NET по конфигурации Debug

Жмём Войти, далее Регистрация.

Вводим в поле «Имя пользователя»: «Test» без кавычек.

В поле «Электронная почта»: «test@test.com».

В поля «Пароль» и «Подтвердите пароль», первоначально вписываем «123», жмём Создать пользователя и видим предупреждение о минимальном количестве знаков и содержании пароля. Вводим любой простой пароль из шести знаков и снова жмём на кнопку:

Рис. 2.6 Запуск веб-приложения ASP.NET по конфигурации Debug: создание базы данных пользователей

Ждём, пока система сформирует базу данных. Закрываем приложение (страницу в браузере). Теперь, если снова запустить приложение и нажать кнопку «Войти», а затем ввести данные пользователя «Test» + его пароль, то будет осуществлён вход в систему веб-приложения. Данные будут подцепляться из базы. Сама база создаётся в папке App_Data. Для просмотра записей таблиц базы сделаем следующее: нажмём в обозревателе решений на кнопку Показать все файлы:

Далее, если на ПК не установлен SQLServer 2012или ниже, будем работать в «местном аналоге» предлагаемым по умолчанию студией. Откроем папку «App_Data»:

Дважды щёлкнем на ASPNETDB.MDF. Откроется новая панель слева:

Рис. 2.7 Обозреватель серверов: ASPNETDB.MDF ->Таблицы ->aspnet_Membership

«Обозреватель серверов» отображает все текущие подключенные серверы (в нашем случаем это текущий ПК), а также все базы данных, когда-либо подключавшиеся к среде разработки и не удалённые из списка «Подключения данных». Если база не подключена, около её значка стоит маленький красный крестик.

Откроем двойным щелчком таблицу aspnet_Membership (префикс имени базы данных и названия таблиц как видно выбран из названия веб-приложения). Откроется «режим конструктора таблицы», где можно изменить свойства тех или иных столбцов, создать новые и прочее:

Рис. 2.8 aspnet_Membership:режим конструктора таблицы

Для открытия данных, выделим в обозревателе серверов эту же таблицу, далее нажмём правую кнопку мыши и затем Показать таблицу данных.

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

Для работы с базами данных (как SQLServer, SQLExpress, таки MicrosoftAccess) VisualStudioимеет достаточно средств для комфортной работы с базами различных поставщиков. В среде разработки предусмотрело большинство средств работы с базами данных. От «схемы данных» и «связи данных», до создания SQL-запросов. Останавливаться на этом не будем. Куда интереснее посмотреть непосредственно код подключения и работы с базой данных.

Для подключения к базе и выбора провайдера используется файл Web.config (в корневой папке проекта). Кодподключенияочевиден:

<configuration>

<connectionStrings>

<addname="ApplicationServices"

connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"

providerName="System.Data.SqlClient" />

</connectionStrings>

За запись данных в базу отвечает файл в папке Account ->Register.aspx, и непосредственно элемент управления CreateUserWizard группа элементов.

Вход

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

<membership>

<providers>

<clear/>

<addname="AspNetSqlMembershipProvider"type="System.Web.Security.SqlMembershipProvider"connectionStringName="ApplicationServices"

enablePasswordRetrieval="false"enablePasswordReset="true"requiresQuestionAndAnswer="false"requiresUniqueEmail="false"

maxInvalidPasswordAttempts="5"minRequiredPasswordLength="6"minRequiredNonalphanumericCharacters="0"passwordAttemptWindow="10"

applicationName="/" />

</providers>

</membership>

За страницу «входа» в систему отвечает файл той же папки: Login.aspx.

За страницу смены пароля для текущего пользователя отвечает файл ChangePassword.aspx. Страница, оповещающая об успешной смене пароля: ChangePasswordSuccess.aspx.

Итак, откроем любую веб-страницу нашего приложения и посмотрим на код. Например, для «начальной» страницы веб-приложения Default.aspx код такой:

<%@PageTitle="Домашняястраница"Language="C#"MasterPageFile="~/Site.master"AutoEventWireup="true"

CodeBehind="Default.aspx.cs"Inherits="LWP18ASPNET._Default"%>

<asp:ContentID="HeaderContent"runat="server"ContentPlaceHolderID="HeadContent">

</asp:Content>

<asp:ContentID="BodyContent"runat="server"ContentPlaceHolderID="MainContent">

<h2>

Добро пожаловать в ASP.NET!

</h2>

<p>

Для получения дополнительных сведений об ASP.NET посетите веб-сайт <ahref="http://www.asp.net"title="Веб-сайт ASP.NET">www.asp.net</a>.

</p>

<p>

Кроме того, <ahref="http://go.microsoft.com/fwlink/?LinkID=152368"

title="Документация по ASP.NET на MSDN">документация по ASP.NET доступна на MSDN</a>.

</p>

</asp:Content>

Это полноценная HTML-страница, которая является «встраиваемой в главную мастер-страницу Site.Master. Встраивание страницы похоже на работу элемента WindowsForms: TabControl. Мастер-страница (шаблон) отвечает за меню и внешнее оформление страницы, содержимое же самой страницы Default.aspxподгружается внутри рамки мастер-страницы. Код Site.Master для вложения содержимого Default.aspx:

<divclass="main">

<asp:ContentPlaceHolderID="MainContent"runat="server"/>

</div>

Каквидно, Default.aspxимеет «ссылку» MainContent:

<asp:ContentID="BodyContent"runat="server"ContentPlaceHolderID="MainContent">

...

</asp:Content>

Информация о том, что страница использует шаблон храниться в заголовке:

... MasterPageFile="~/Site.Master" ...

Для чего нужны шаблоны (Site.Master)?

Так вот, чтобы не делать на всех страницах одну и туже шапку, меню и всё остальное, применяют «главную страницу», на которой это всё и размещают, а содержимое будет выводиться в специальную область.

Разумеет, страницы могут быть любыми и содержать любой HTML-код. Классический вариант веб-страниц это «пустая» страница, или так называемая Форма WebForm, которую можно добавить вызван окно создания нового элемента для проекта. Встраиваемая страница под выбираемый шаблон: Веб-форма, использующая главную. Главный шаблон: Главная страница.

Создаём новый элемент: Проект ->Добавить новый элемент... (Ctrl+Shift+A). Выбираем тип страницы «Веб-форма, использующая главную страницу», Имя вводим как Page.aspx, жмём ОК.

Рис. 2.9 Добавление нового элемента - LWP18ASPNET: добавление встраиваемой страницы

В следующем окне, среда разработки поспросит выбрать главную страницу в качестве основы. У нас она одна, это «Site.Master». Жмём ОК.

Любая веб-страница имеет свой «Конструктор». Как и для WindowsForms, так и для WPF отображение страницы через конструктор достаточно наглядное. Для переключения между режимами работы с файлами веб-страниц используются кнопки «Конструктор», «Разделитель» и «Исходный код». Наиболее удобным (личное мнение автора) является режим «Разделитель», подходящий идеально в случае наличия монитора с большим экраном :

Представление «Конструктор» -- это область редактирования, близкая к режиму точного отображения (WYSIWYG).Представление «Исходный код» -- это HTML-редактор страницы.В представлении с Разделитель отображаются оба представления документа -- Конструктор и Исходный код.

Добавленная страница теперь выглядит так:

Напишем что-нибудь внутри:

Тут же изменится HTML-код (тэг p будет вставлен автоматически):

<asp:ContentID="Content2"ContentPlaceHolderID="MainContent"runat="server">

<p>

Это новая страница нашего сайта!</p>

</asp:Content>

Выполним последовательно следующие действия:

1. Поместите точку (курсор) вставки в конце текста «Это новая страница нашего сайта!» и нажмём Enterодин раз, чтобы создать дополнительное пространство в поле элемента div. Вручную перепишем тэг

<p></p>на тэг <div><div>:

<p>

Это новая страница нашего сайта!</p>

<div>

</div>

2. Развернём группу Стандартные на панели элементов.

3. Перетащим элемент управления TextBox на страницу и расположим его в центре поля элемента div.После текстового поля нажмём пробел.

4. Перетащим элемент управления Button на страницу, и расположите его справа от элемента управления TextBox.

5. Изменим код div'а для вставки над TextBoxстрочки«Введите свое имя:»:

<div>

<p>Введите ваше имя:<br/>

<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox>&nbsp;<asp:

Button

ID="Button1"runat="server"Text="Button"/>

</p>

</div>

6. Переставим курсор в конструкторе после кнопки и нажмём клавишу Enter, чтобы расширить место на странице.Перетащим элемент управления Label на страницу, и расположим его на отдельной строке под элементом управления Button.

7. Выберем элемент управления Button, после чего в окне Свойства задаём для свойства Text значение «Отображаемое имя».Введённый текст появится на кнопке в конструкторе. Получим:

Теперь выполним следующее:

1. Перейдём в представление «Исходный код».

В представлении Исходный код отображается HTML-код страницы, включая элементы, автоматически создаваемые в Visual Studio для серверных элементов управления. Для объявления элементов управления используется схожий с HTML синтаксис. Отличие заключается в использовании префикса asp: и атрибута runat="server".

Свойства элемента управления объявляются как атрибуты.Например, при задании свойства Text элемента управления Buttonфактически задаётся атрибут Text разметки элемента управления.

Обратим внимание, что все элементы управления находятся внутри элемента Content, который также имеет атрибут runat="server".Атрибут runat="server" и префикс asp: тегов элемента управления отмечают элементы управления так, что они обрабатываются в ASP.NET на сервере при запуске страницы. Код вне элементов <form runat="server"> и <script runat="server"> передаётся в браузер в неизменённом виде, поэтому код в ASP.NET должен быть внутри элемента, в открывающем теге которого содержится атрибут runat="server".

2. Установим точку вставки после asp:Label в теге <asp:Label> и нажмём на пробел.Появится раскрывающийся список, в котором отображается список свойств, которые можно задавать для элемента управления Label.Эта стандартный IntelliSense1, помогает работать в представлении «Исходный код» с синтаксисом серверных элементов управления, HTML-элементами и другими элементами на странице.

3. Выберем свойство ForeColor и введём знак равенства и знак кавычек «="». Отобразится список возможных цветов.

4. Выберите цвет текста элемента управления Label.Выберем достаточно тёмный цвет, который будет хорошо смотреться на белом фоне.

5. Дважды щёлкнем элемент управления Button в конструкторе. Visual Studio переключится в представление Исходный код и создаст каркас обработчика для события по умолчанию элемента управления Button и события Click. Код события Click, а также слегка изменённое событие возникающие при вызове страницы Page_Load:

protectedvoid Page_Load(object sender, EventArgs e)

{

Label1.Text = "";

}

protectedvoid Button1_Click(object sender, EventArgs e)

{

Label1.Text = TextBox1.Text + ", добро пожаловать на страницу!";

}

Прокрутим HTML-кодстраницы вниз до элемента <asp:Button>.Обратим внимание, что элемент <asp:Button> теперь имеет атрибут onclick="Button1_Click".

ПРИМЕЧАНИЕ № 1: Раскрывающийся список IntelliSense можно отобразить в любой момент путем нажатия сочетания клавиш Ctrl+J.

Теперь для данной страницы выполним последние действия (добавление элемента управления «Календарь»):

1. В Visual Studio перейдём в представление конструктора.

2. Из раздела Стандартные на панели элементов перетащим элемент управления Calendar на страницу, и разместите его под элементом Label (Enter после элемента создаст новый тэг «p»).Отобразится панель смарт-тега календаря. Панель отображает команды, которые позволяют выполнять самые часто используемые задачи выбранного элемента управления.

3. В области смарт-тега выберемАвтоформат....

4. В окне Автоформат в списке «Выберите схему», выбираем Простой. Жмём ОК.

5. В представлении «Конструктор» дважды щёлкнем на элементе управления «Calendar». Исходный код события SelectionChanged:

protectedvoid Calendar1_SelectionChanged(object sender, EventArgs e)

{

Label1.Text = Calendar1.SelectedDate.ToLongDateString();

}

Страницу можно запускать через отладку, но если текущий выбор в среде разработки выставлен на иную страницу (не на Page.aspx), то для доступа к странице придётся вводить имя в адресную строку браузера.

Для того, чтобы добавить страницу в меню навигации веб-приложения (запускать не только через отладку), откроем файл Site.Masterи перейдём на представление «Исходный код». Найдём:

<divclass="clear hideSkiplink">

<asp:MenuID="NavigationMenu"runat="server"CssClass="menu"EnableViewState="false"IncludeStyleBlock="false"Orientation="Horizontal">

<Items>

<asp:MenuItemNavigateUrl="~/Default.aspx"Text="Домашняя"/>

<asp:MenuItemNavigateUrl="~/About.aspx"Text="Опрограмме"/>

</Items>

</asp:Menu>

</div>

Здесь главным является элемент Menu. Дочерние элементы расположены в тэге Items. Для добавления новых можно скопировать код и вписать нужный адрес, либо работать через визуальный конструктор (смарт-тэг Правка элементов меню...):

Редактируемкод:

<divclass="clear hideSkiplink">

<asp:MenuID="NavigationMenu"runat="server"CssClass="menu"EnableViewState="false"IncludeStyleBlock="false"Orientation="Horizontal">

<Items>

<asp:MenuItemNavigateUrl="~/Default.aspx"Text="Домашняя"/>

<asp:MenuItemNavigateUrl="~/Page.aspx"Text="Страница"/>

<asp:MenuItemNavigateUrl="~/About.aspx"Text="Опрограмме"/>

</Items>

</asp:Menu>

</div>

И изменим заголовок (для браузера) Page.aspx:

<%@PageTitle="Новаястраница"Language="C#"MasterPageFile="~/Site.Master"AutoEventWireup="true"CodeBehind="Page.aspx.cs"Inherits="LWP18ASPNET.Page"%>

Компилируем, проверяем работоспособность. Вводим имя, жмём кнопку и выделяем дату в календаре на странице.

Рис. 2.10 Результат работы веб-приложения ASP.NET: выбрана дата в календаре

2. Модификация веб-приложения ASP.NET: реализация различной функциональности

На этот раз будем работать на странице Default.aspx. Перейдём к конструктору страницы. Нажмём Enterпосле последней строчки с текстом. Добавиться новый тэг «p». С панели элементов перетащим TextBoxи изменим свойства:

Width:

300px

ReadOnly:

True

Откроем событие Page_Loadдля этой страницы (файл Default.aspx.cs) и впишем:

TextBox1.Text = "Московское время: " + DateTime.Now.TimeOfDay.ToString();

// Response.Write("Сейчас: " + DateTime.Now); // Функция выводит строку в левом верхнем углу страницы

Ещё несколько слов о ViewState и серверных элемента управления:

В Visual Studio есть два раздела с похожими компонентами Например такие как TextBox (текстовое поле для редактирования). Один элемент находится в разделе «Стандартные» (TextBox) другой находится в разделе HTML «Input (Text)». В чём же их отличие? Для начала добавим на страницу два этих элемента управления:

<p>

<asp:TextBoxID="TextBox2"runat="server"></asp:TextBox>

<inputid="Text1"type="text"/>

</p>

Кроме того, что они объявляются по-разному, в TextBox добавлен параметр runat="server", который он говорит компилятору о том, что исполнение данного элемента будет происходить на сервере. Похоже наTextBox в WindowsForms, то есть элемент имеет свойства, методы и события.

Второй же элемент,не что иное, как известный всем HTML тэг и компилятором он никак обрабатываться не будет, а будет использоваться как обычный HTML.

В случае PHPили HTML: у пользователя всегда была нужная переменная на каждой странице, и её надо все время передавать через запросы (речь не о«cookie»), например через «input type=hidden».

В ASP.NET есть механизм, который называется ViewState. На самом деле ViewState это тот-же input type=hidden в который добавляются все свойства серверных элементов управления. По умолчанию все свойства элементов «серелизуются» в ViewState.

Таким образом, задав например цвет элемента красным -- он будет красным на всех страницах после каждого «постбэка» (посылки запроса) пользователя.

При инициализации страницы все доступные свойства из ViewState подставляются в наш серверный элемент.

Для HTML-элементов такое разумеется не выполняется.

При всех своих плюсах ViewState имеет минус --размер. При большом количестве элементов на странице и большом изменении их свойств ViewState может сильно раздуваться.

Необходимо позаботиться о пользователях с низкими скоростями соединения с интернетом.

Можно удалить ViewState двумя способами:

1. Удалять для всей странице целиком, указав директиву EnableViewState="false".

<%@PageTitle="Домашняястраница"Language="C#"MasterPageFile="~/Site.master"AutoEventWireup="true"EnableSessionState="False"

CodeBehind="Default.aspx.cs"Inherits="LWP18ASPNET._Default"%>

2. Выключить для отдельных элементов:

<asp:TextBoxID="TextBox2"runat="server"EnableViewState="false"></asp:TextBox>

Global.asax:

Иногда, нужно обработать события, которые возникают в момент первого посещения сайта пользователем. Например, хотим знать когда пользователь зашёл или когда вышел или просто факт того что он был на сайте и прочее. Как же это сделать?

Но начнём не с пользователя, а с приложения.

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

1. Application_Start отрабатывается, когда загружается приложение, допишем туда код (одну строку после комментария):

void Application_Start(object sender, EventArgs e)

{

// Код, выполняемый при запуске приложения

Application["users"] = 0;

}

2. Application_End--приложение завершается.

3. Application_Error--ошибка в приложении.

4. Session_Start-- начинается сессия для нового пользователя. Код наш выполняет увеличение счётчика на единицу:

void Session_Start(object sender, EventArgs e)

{

// Код, выполняемый при запуске нового сеанса

Application["users"] = Convert.ToInt32(Application["users"]) + 1;

}

5. Session_End-- завершается сессия. Событие Session_End вызывается только в том случае, если для режима sessionstateзадано значение «InProc» в файле Web.config. Если для режима сеанса задано значение StateServer или SQLServer, событие не порождается. Код выполняет уменьшение счётчика на едениу при завершении сессии:

void Session_End(object sender, EventArgs e)

{

// Код, выполняемый при запуске приложения.

// Примечание: Событие Session_End вызывается только в том случае, если для режима sessionstate

// задано значение InProc в файле Web.config. Если для режима сеанса задано значение StateServer

// или SQLServer, событие не порождается.

Application["users"] = Convert.ToInt32(Application["users"]) - 1;

}

Добавим на страницу Default.aspxновый элемент TextBoxс HTML-кодом:

<p>

<asp:TextBoxID="TextBox3"runat="server"ReadOnly="True"

Width="300px"></asp:TextBox>

</p>

Код для события Page_LoadфайлаDefualt.aspx.cs:

TextBox3.Text = "Числопользователейнасайте: " + Application["users"].ToString();

Button:

В веб-приложениях кнопка делает «PostBack» (в HTML это называется submit) на какую-либо страницу (чаще всего на свою же). Основное отличие ASP.NET заключается в том, что по кнопке идёт не только постбэк (передача POST и GET параметров), но так же ещё отрабатывает событие Click которое обрабатывается каким либо методом, то есть после нажатия кнопки не только перезагрузиться страница, но и отработает метод, подвязанный на событие Click.

У кнопки имеются следующие интересные свойства:

1. CssClass--указывает имя класса стилей изCSS-файла.

2.Text-- надпись на кнопке.

3.Enabled--когда true кнопка активна. То есть её возможно нажать.

4.EnableViewState--хранить или нет состояние элемента вViewState.

5.OnClientClick--указывается инструкция JavaScript, которая выполнится при нажатии по кнопке.

6.PostBackUrl--страница на которую будет выполнен постбэк (передача параметров). Аналог action в тэге form.

7.ToolTip-- всплывающая подсказка.

8.ValidationGroup--группа для проверки значений перед постбэком.

9.Visible-- когда false кнопка не отображается.

Практически все перечисленные выше параметры являются общими для всех элементов.

Посмотрев на генерируемый ASP.NET HTML-код видно как DropDownList превращается в select, или как TextBox становится «input type="text”», но также можно заметить и как ASP.NET формирует имена HTML элементов. То-есть формируемые имена имеют другойID (а не тот, что указан в коде при написании приложения). И при задаче проверки или выполнения какого либо JavaScript кода можно зайти в тупик, какое же будет имя элемента управления. Но об этом позаботились. У каждого элемента есть свойство ClientID которое и содержит генерируемое имя.

Посмотрим пример, который на JavaScript будет выводить HTML имя кнопки. Добавим на страницуDefault.aspx кнопку со следующим кодом (свойства кнопки уже указаны в коде):

<p>

<asp:ButtonID="Button1"runat="server"Text="Узнатьимяэтойкнопки"

OnClientClick="alert(this.name);"/>

</p>

Нажатие этой кнопки будет выводить сгенерированное имя:

Создаём TabControl:

В Windows Forms приложениях есть элемент управления TabControl который представляет собой панель с закладками. К сожалению в веб-приложениях такого нет, но можно сделать. Для этого будем использовать элементы:Menu (панель элементов, группа Переходы), MultiView, View. Вначале на новой строке в конструкторе разместим Menu, после добавления нажмём на смарт-тэг «Правка элементов меню...». Создаём три вкладки:

Рис. 3.1 Редактор элементов меню: «Вкладка № 1»

Последовательно добавим три меню элемента с разными свойствами Textи Value:

Первый элемент меню:

Text:

Вкладка № 1

Value:

0

Второй элемент меню:

Text:

Вкладка № 2

Value:

1

Третий элемент меню:

Text:

Вкладка № 3

Value:

2

Применим какой-нибудь шаблон для меню. Например, Профессиональный (смарт-тэг для элемента Menu-- «Автоформат...»):

Меню разместим горизонтально. Нажмём мышкой на код:

<asp:Menu...>

И на панели свойств изменим свойство:

Orientation:

Horizontal

После меню добавим элемент MultiView и внутри размести последователь (три раза) три элемента View. В каждом viewчто-нибудь напишем.

Получим HTML-код:

<p>

<asp:MultiViewID="MultiView1"runat="server">

<asp:ViewID="View1"runat="server">

Вкладка № 1

</asp:View>

<asp:ViewID="View2"runat="server">

Вкладка № 2

</asp:View>

<asp:ViewID="View3"runat="server">

Вкладка № 3

</asp:View>

</asp:MultiView>

</p>

Теперь проинициализируем событие нажатия на элемент меню. Для этого дважды щёлкнем на представлении «Конструктор» на элементе управления Menuнашей страницы. Будет создан обработчик события MenuItemClick. Запишем туда код:

protectedvoidMenu1_MenuItemClick(objectsender, MenuEventArgse)

{

MultiView1.ActiveViewIndex = Convert.ToInt32(Menu1.SelectedValue);

}

Теперь при выборе любого меню «Вкладка № ...» будет отображена соответствующая вкладка:

DropDownList:

Аналогом ComboBox В ASP.NET является DropDownListВ коде HTML он будет выглядеть как «select». Добавим его на страницу и свяжем с базой данных сайта. Добавим следующий HTML-код после последнего закрывающего элемента </p>:

<palign="right">

Зарегистрированные пользователи:

</p>

Переместим курсор выделения после двоеточие и перетащим DropDownList. После добавления нажмём на смарт-тэг «Выбрать источник данных...». В открывшемся окне в поле Выберите источник данных выберем <Новый источник данных>. В следующем окне выберем База данных (иконка с надписью «SQL»), в единственном поле редактирования впишем «ASPNETDB»:

Рис. 3.2 Мастер конфигурации источника данных: выбор истопника и ввод префикса

Жмём ОК. В следующем окне в выпадающем списке выбираем ApplicationServices, жмём «+» чтобы посмотреть строку соединения с базой:

Рис. 3.3 Настроить источник данных - ASPNETDB: выбор соединения данных

Жмём Далее. В следующем окне в поле имя выбираем из списка таблицу vw_aspnet_Users. В поле Столбцы щёлкаем по UserName:

Рис. 3.4 Настроить источник данных - ASPNETDB: запрос из базы

Жмём Далее. В следующем окне можно протестировать запрос на выполнение (получим все имена зарегистрированных пользователей). Жмём Готово, это вернёт нас к первому, открывшемуся по цепочке окну:

Там уже автоматически настроятся оставшиеся поля для DropDownList(как на кусочке рисунка выше).Жмём ОК. Теперь элемент «списка» будет отображать на странице сайта всех зарегистрированных пользователей:

Panel:

Panel используется в качестве контейнера для нескольких элементов и может выполнять групповые операции, например скрытия объектов. Добавим две панели и разместим в первой текстовое поле и кнопку, а во второй панели создадим Label и будем выводить в него текст введенный в текстовое поле После нажатия на кнопку на странице должна быть только введённая надпись Первоначально установим свойство Visible для второй панели какfalse. Всё это реализует простым HTML-кодом (элементы были добавлены переносом, свойства изменены на панели свойств):

<p>

&nbsp;<asp:PanelID="Panel1"runat="server"Height="50px"Width="125px">

<asp:TextBoxID="TextBox4"runat="server"></asp:TextBox>

<asp:ButtonID="Button2"runat="server"OnClick="Button2_Click"Text="Нажмименя!"/></asp:Panel>

<asp:PanelID="Panel2"runat="server"Height="50px"Visible="False"Width="125px">

<asp:LabelID="Label1"runat="server"Text="Label"></asp:Label></asp:Panel>

</p>

Событие Clickдля кнопки с Button3:

protectedvoid Button2_Click(object sender, EventArgs e)

{

Label1.Text = TextBox4.Text;

Panel1.Visible = false;

Panel2.Visible = true;

}

LiteralиспользуетсявкачествеконтейнерадляHTML. Иногда бывает ситуация при которой нет возможности использовать ASP.NET элементы управления или просто такого элемента нет. Добавляем в то место, куда хотим вывести HTML блок элемент Literal и в свойство Text записываем HTML-код. Вновыйблок «p» перетаскиваемэтотэлемент:

<p>

<asp:LiteralID="Literal1"runat="server"></asp:Literal>

</p>

Добавляем следующие строчки к событию Page_Loadстраницы:

String table = "<table border=\"1\"><tr>";

for (int i = 0; i < 10; i++) table += "<td>" + i + "</td>";

table += "</tr></table>";

Literal1.Text = table;

Этот код нарисует табличку:

Wizard:

При реализации многостраничной регистрации, или списка вопросов, которые не умещались на одну страницу и прочее, возникает задача разнести вопросы по нескольким последовательно связанным страницам. Можно делать через множество страниц и передавть все предыдущие ответы через поля «hidden», можно через GET, возможно, объединять элементы в Panel и затем их скрывать. В ASP.NET 2.0 появился элемент управления Wizard. В Wizard настраивается: количество шагов, формат кнопок, надписи на них, внешний вид и прочее. Всё что необходимо, это добавить нужные элементы внутрь шага Wizard. Перетащим Wizard на новую сточку на странице (новый тэг «p»). Это создаст HTML-код:

<p>

<asp:WizardID="Wizard1"runat="server">

<WizardSteps>

<asp:WizardStepID="WizardStep1"runat="server"Title="Step 1">

</asp:WizardStep>

<asp:WizardStepID="WizardStep2"runat="server"Title="Step 2">

</asp:WizardStep>

</WizardSteps>

</asp:Wizard>

</p>

Для визуального редактирования элементов можно воспользоваться смарт-тэгом Добавить/удалить шаги WizardStep...:

Рис. 3.5 Редактор коллекции WizardStep: добавляем три шага и указываем Title

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

<p>

<asp:WizardID="Wizard1"runat="server"ActiveStepIndex="0"BackColor="#F7F6F3"

BorderColor="#CCCCCC"BorderStyle="Solid"BorderWidth="1px"

Font-Names="Verdana"Font-Size="0.8em">

<HeaderStyleBackColor="#5D7B9D"BorderStyle="Solid"Font-Bold="True"

Font-Size="0.9em"ForeColor="White"HorizontalAlign="Left"/>

<NavigationButtonStyleBackColor="#FFFBFF"BorderColor="#CCCCCC"

BorderStyle="Solid"BorderWidth="1px"Font-Names="Verdana"Font-Size="0.8em"

ForeColor="#284775"/>

<SideBarButtonStyleBorderWidth="0px"Font-Names="Verdana"ForeColor="White"/>

<SideBarStyleBackColor="#7C6F57"BorderWidth="0px"Font-Size="0.9em"

VerticalAlign="Top"/>

<StepStyleBorderWidth="0px"ForeColor="#5D7B9D"/>

<WizardSteps>

<asp:WizardStepID="WizardStep1"runat="server"Title="Шаг № 1">

<asp:TextBoxID="TextBox5"runat="server"></asp:TextBox>

</asp:WizardStep>

<asp:WizardStepID="WizardStep2"runat="server"Title="Шаг № 2">

<asp:CheckBoxID="CheckBox1"runat="server"Text="Выделименя!"/>

</asp:WizardStep>

<asp:WizardStepID="WizardStep3"runat="server"Title="Шаг № 3">

Готово!

</asp:WizardStep>

</WizardSteps>

</asp:Wizard>

</p>

Это создаст следующее:

Application (глобальные переменные веб-приложения):

Наверное, задач хранения глобальных переменных в ASP.NET да и вообще в веб технологиях не так и много, но они все таки есть. Есть они в том числе и в ASP.NET Хранятся переменные через HttpApplicationState. Итак, данные в Application хранятся на протяжении жизни приложения ASP.NET и доступны из любого места приложения. Об использовании Applicationуже было рассказано ранее в данной лабораторной работе.

Session (глобальные переменные сессии):

Нарядус хранением переменных в Application, также можно их хранить и в сессии пользователя. Отличие будет в том, что эти переменные будет видеть только пользователь-владелец сессии (браузер одного ПК). Воспользуемся одним из TextBoxуже установленных на странице и добавим только код в событие Page_Loadстраницы:

Session["myBrowser"] = Request.Browser.Browser + " " + Request.Browser.Version;

if (Session["myBrowser"] != null) { TextBox2.Text = "Вашбраузер: " + Session["myBrowser"].ToString(); }

Организовать выход пользователя с сайта, а, следовательно, удалить все переменные в его сессии можно с помощью статического метода Abandon. Добавим в файл Global.asax.csв метод Session_Endследующий код:

Session.Abandon();

При запуске страницы из InternetExplorerверсии 9.0 получим:

FileUpload (загрузка файлов на сервер):

FileUpload позволяет пользователю загрузить файл на сервер. Разместим этот элемент на страница, а также рядом поместим кнопку и текстовое поле:

<asp:FileUploadID="FileUpload1"runat="server"/>

&nbsp;<asp:ButtonID="Button4"runat="server"Text="Загрузитьфайл"onclick="Button4_Click"/>

&nbsp;<asp:LabelID="Label3"runat="server"Text="Label"Visible="False"></asp:Label>

СобытиеClickкнопкиButton4:

String SavePath = @"D:\";

// Метод MapPath возвращает полный физический путь для виртуального пути, который можно передать в метод.

// Например, следующий код возвращает путь к файлу с корневого каталога веб-узла:

// String SavePath = Server.MapPath("~"); //

if (FileUpload1.HasFile)

{

SavePath += FileUpload1.FileName;

FileUpload1.SaveAs(SavePath);

Label3.Visible = true;

Label3.Text = "Файлсохранёнв, путь: " + SavePath + ". Размерфайла: " + (FileUpload1.FileBytes.Length/(1024)).ToString() + "Кб";

}

Витоге, жмёмкнопкуобзор, выбираемлюбойфайлижмёмЗагрузитьфайл. Файл копируется на диск D (это может быть корневой каталог сервера и соответственно абсолютный путь до директории сайта на сервере). Пример работы загрузки в корневой каталог «веб-сайта» (метод MapPath):

Файл был загружен в каталог запуска веб-приложения.

ServerVariables(узнаём параметры клиента):

Часто встречается задача определения некоторых параметров клиента, например таких как его IP адрес, клиентское приложение, ссылка с которой клиент пришёл на данную страницу и прочее. Вся эта информация хранится в ServerRequest HTTP запроса Для получения всех параметров клиента сделаем следующее. Добавим DropDowListна «Вкладку № 1»:

<asp:ViewID="View1"runat="server">

Сведенияоклиенте:<br/>

<asp:DropDownListID="DropDownList2"runat="server">

</asp:DropDownList>

</asp:View>

А также перепишем событие нажатия на элемент Menu:

protectedvoid Menu1_MenuItemClick(object sender, MenuEventArgs e)

{

MultiView1.ActiveViewIndex = Convert.ToInt32(Menu1.SelectedValue);

foreach (string key in Request.ServerVariables.AllKeys)

{

if (key == "ALL_HTTP" || key == "ALL_RAW") { }

else { DropDownList2.Items.Add(key + " = " + Request.ServerVariables[key]); }

}

}

Данный код выводит все параметры клиента, кроме самых длинных (записываются в одну строку):

Рис. 3.4 Результат работы веб-приложения ASP.NET: получений сведений о клиенте на стороне клиента

Кэширование:

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

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

<%@OutputCacheDuration="10"Location="server"VaryByParam="*"%>

Duration указывает, на какой интервал времени (в секундах) кэшировать страницу.

Location указывает, где будет храниться кэш.

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

Откомпилируем страницу, и попробуем «побегать» по меню навигации и нажимать F5. Время не будет менять в текстовом поле в течение 10 минут (на серверные кнопки не распространяется).

Создаем пользовательский элемент:

При многократном использовании каких либо элементов управления, можно создать свой собственный и использовать его в любом месте веб-приложения. Создаём. Выполним Проект ->Добавить новый элемент...: ищем в открывшемся окне Пользовательский веб-элемент управления. Вводим Имя: MyControl.ascx, жмём ОК.

Открываем HTML-код элемента, перемещаем курсор на пустое место внутри кода и последовательно перетаскиваем DropDownList, Buttonи TreeView (группа Переходы панели элементов). Настраиваем «дерево» элементов TreeView (смарт-тэг «Правка узлов...»):

Рис. 3.5.Редактор узла TreeView: создаём «дерево» по своему вкусу

Для создания дочерних элементов выбираем последний элемент для которого необходимо создать дочерний элемент и жмём Добавить дочерний узел. Для созданий нескольких дочерних элементов в одном узле, выделенным узлом должен быть родительский узел.

Также, изменяем стиль «дерева» (смарт-тэг «Автоформат...») на стиль «MSDN». Основные свойства элемента TreeViewкоторые будут также изменены (показываем линии «дерева» и ставим CheckBoxоколо каждого элемента:

ShowLines:

True

ShowCheckBoxes:

All

HTML-код пользовательского элемента будет таким:

<%@ControlLanguage="C#"AutoEventWireup="true"CodeBehind="MyControl.ascx.cs"Inherits="LWP18ASPNET.MyControl"%>

<asp:DropDownListID="DropDownList1"runat="server">

</asp:DropDownList>

<asp:ButtonID="Button1"runat="server"Text="Показатьвыделенныеузлы"

onclick="Button1_Click"/>

<asp:TreeViewID="TreeView1"runat="server"ImageSet="Msdn"NodeIndent="10"

ShowCheckBoxes="All"ShowLines="True">

<HoverNodeStyleBackColor="#CCCCCC"BorderColor="#888888"BorderStyle="Solid"

Font-Underline="True"/>

<Nodes>

<asp:TreeNodeText="Корень № 1"Value="Корень № 1">

<asp:TreeNodeText="1, 1"Value="1, 1"></asp:TreeNode>

</asp:TreeNode>

<asp:TreeNodeText="Корень № 2"Value="Корень № 2">

<asp:TreeNodeText="2, 2"Value="2, 2"></asp:TreeNode>

<asp:TreeNodeText="2, 1"Value="2, 1"></asp:TreeNode>

</asp:TreeNode>

<asp:TreeNodeText="Корень № 3"Value="Корень № 3">

<asp:TreeNodeText="3, 1"Value="3, 1">

<asp:TreeNodeText="3, 1, 1"Value="3, 1, 1"></asp:TreeNode>

</asp:TreeNode>

</asp:TreeNode>

<asp:TreeNodeText="Корень № 4"Value="Корень № 4">

<asp:TreeNodeText="4, 1"Value="4, 1">

<asp:TreeNodeText="4, 1, 1"Value="4, 1, 1">

<asp:TreeNodeText="4, 1, 1, 1"Value="4, 1, 1, 1"></asp:TreeNode>

</asp:TreeNode>

</asp:TreeNode>

</asp:TreeNode>

<asp:TreeNodeText="Корень № 5"Value="Корень № 5">

<asp:TreeNodeText="5, 1"Value="5, 1">

<asp:TreeNodeText="5, 1, 1"Value="5, 1, 1">

<asp:TreeNodeText="5, 1, 1, 1"Value="5, 1, 1, 1">

<asp:TreeNodeText="5, 1, 1, 1, 1"Value="5, 1, 1, 1, 1"></asp:TreeNode>

</asp:TreeNode>

</asp:TreeNode>

</asp:TreeNode>

</asp:TreeNode>

</Nodes>

<NodeStyleFont-Names="Verdana"Font-Size="8pt"ForeColor="Black"

HorizontalPadding="5px"NodeSpacing="1px"VerticalPadding="2px"/>

<ParentNodeStyleFont-Bold="False"/>

<SelectedNodeStyleBackColor="White"BorderColor="#888888"BorderStyle="Solid"

BorderWidth="1px"Font-Underline="False"HorizontalPadding="3px"

VerticalPadding="1px"/>

</asp:TreeView>

СобытиеClickдлякнопкиButton1пользовательскогоэлементабудетдобавлятьвDropDownListзначениявсехвыделенныхэлементоввTreeView:

protectedvoid Button1_Click(object sender, EventArgs e)

{

DropDownList1.Items.Clear();

for (int i = 0; i < TreeView1.Nodes.Count; i++) Check(TreeView1.Nodes[i]);

}

privatevoid Check(TreeNode tn)

{

if (tn.Checked) DropDownList1.Items.Add("[" + tn.Value + "] ");

if (tn.ChildNodes.Count > 0)

{

for (int i = 0; i < tn.ChildNodes.Count; i++) Check(tn.ChildNodes[i]);

}

}

Зарегистрируем элемент управления, используя директиву Register (регистрировать необходимо на страницах, на которых будем использовать наш элемент) на странице Default.aspx:

<%@RegisterSrc="~/MyControl.ascx"TagPrefix="My"TagName="SpecialControl"%>

И используем элемент управления на странице:

<p><my:specialcontrolID="My1"runat="server"/></p>

Что получилось в итоге:

Cookie:

Мы уже рассматривали как можно хранить переменные отдельного пользователя в сессии, но чаще возникает желание хранить нечто, что сразу будет ассоциироваться с пользователем ранее посещавшим сайт. За дело берутся «cookie». «Куки» сохраняются не в сессии, а на компьютере пользователя. При первом обращении к сайту мы посылаем «кук» на машину клиента; при следующем заходе (или когда нам потребуется) мы можем запросить кук и идентифицировать пользователя или установить на сайте настройки, которые пользователь выбирал в прошлом и прочее. Итак, пользователь вводит в текстовое поле свои данныеи передаёт информацию на сервер. В ответ на это сервер отправляем ему кук с этой информацией. Воспользуемся кнопкой Button2и полем TextBox4 (которые были созданы для работы с Panel):

Текст события Clickкнопки Button2перепишем, добавив строчку кода, которая отправляет написанное в TextBox4в cookie-файл пользователя:

protectedvoid Button2_Click(object sender, EventArgs e)

{

Panel1.Visible = false;

Panel2.Visible = true;

Response.Cookies["TextC"].Value = TextBox4.Text;

Label1.Text = TextBox4.Text;

}

ДобавимследующийкодвсобытиеPage_Load:

Response.Cookies["Text"].Expires = DateTime.Now.AddHours(1); // Времяжизни cookie

if (Request.Cookies["TextC"] != null) // Получаемзначение cookie

{

Panel2.Visible = true;

Label1.Text = Request.Cookies["TextC"].Value;

TextBox4.Text = Request.Cookies["TextC"].Value;

}

Код при загрузке страницы проверяет наличие cookieс полем TextC, если не пустое и существует, заполняем TextBox4. Также этот код устанавливает «время жизни» cookieс нашего сайта (1 час). В результате, вводим данные в текстовое поле, открываем ещё одну страницу браузера и видим введённое нами число в нужном поле:

Для проверки можно переключиться между страницами сайта и убедиться, что другие элементы управления сбрасываются после обновления страницы.

Web.config:

В ASP.NET реализован интересный механизм, который позволяет перекрывать практически все настройки веб сервера: файл Web.config. В данном файле описываются все свойства веб приложения. Благодаря этому файлу больше не потребуется обращаться, например, к хостинг провайдеру, где лежат файла сервера для изменения параметров веб-сервера, всё можно описать в этом файле. Файл представляет собой XML документ, рассмотрим некоторые секции.

Код ниже, позволяет указать выводить или нет отладочную информацию на страницу при возникновении ошибки (секция<system.web>...</system.web>):

<compilationdebug="true"targetFramework="4.0" />

Код ниже устанавливает способ авторизации:

<authenticationmode="Forms">

<formsloginUrl="~/Account/Login.aspx"timeout="2880" />

</authentication>

Код ниже устанавливает режим хранения сессии:

<sessionStatemode="StateServer"></sessionState>

Коднижеустанавливаетпараметрыглобализации:

<globalization

fileEncoding="utf-8"

requestEncoding="utf-8"

responseEncoding="utf-8"

culture="ru-RU"

uiCulture="ru-RU" />

Код ниже позволяет настраивать стандартные ошибки HTTP:

<customErrorsmode="RemoteOnly"defaultRedirect="GenericErrorPage.htm">

<errorstatusCode="403"redirect="NoAccess.htm" />

<errorstatusCode="404"redirect="FileNotFound.htm" />

</customErrors>

И последнее в данной части работы.Контроль ошибок ввода на стороне пользователя:

Зачем? Можно проверять все введённые пользователем данные и на сервере, но лучше этого избегать: во-первых затрачиваются лишние ресурсы сервера, во-вторых пользователю лучше сразу показать, где ошибка, экономя его время. Итак, на стороне клиента правильность заполнения кода можно проверить на JavaScript. В ASP.NET есть несколько элементов управления, которые генерируют JavaScript с целью проверки правильного заполнения формы. Находятся в группе Проверка:

Начнём:

RequiredFieldValidator проверяет, заполнено поле или нет. Свойства элемента таковы:

· ControlToValidtae-- имя элемента, который необходимо проверить

· Text--сообщение, об ошибке которое, покажется,в случае если поле не заполнено.

· ErrorMessage--сообщение, об ошибке которое, покажется, в списке всех ошибок (summary).

· ValidationGroup--задаёт имя группы проверки. Актуально если на странице две кнопки, которые могут делать постбэк. И две группы элементов, которые хотим проверять.

Добавим на страницу следующий HTML-код (элемент проверки расположен после текстового поля, шрифт ошибки изменён):


Подобные документы

  • Проектирование вариантов использования приложения. Анализ существующей версии приложения. Обоснование выбора инструментальных программных средств. Проектирование интерфейса пользователя. Адаптация под мобильные устройства. Описание программного продукта.

    курсовая работа [2,8 M], добавлен 25.06.2017

  • Мониторинг сервисов веб-приложения. Проблема отслеживания большого количества сервисов, поддерживающих работу веб-приложения, ее решение с помощью "Service discovery"-инструментов. Применение программного инструмента Consul как клиент-серверной системы.

    статья [184,4 K], добавлен 10.12.2016

  • Создание многоуровневого приложения с Web-интерфейсом выставления оценки фильму и просмотра оценок других пользователей. Клиентская часть приложения. Разработка многопользовательского веб-приложения на ASP.NET MVC 3 с разграничением доступа к данным.

    курсовая работа [949,7 K], добавлен 22.02.2015

  • Разработка приложений для смартфонов на ОС Android для сети аптек "Фармация". Архитектура операционной системы Android. Архитектура и реализация приложения. Его функциональность. Описание работы мобильного приложения. Расчет затрат на создание продукта.

    дипломная работа [1,6 M], добавлен 17.06.2017

  • Основные инструменты построения Web-приложения. Язык сценариев PHP. Системный анализ предметной области базы данных. Коды SQL запросов на создание таблиц. Разработка Web-приложения. Описание функциональности модулей. Система управления содержимым статей.

    курсовая работа [4,8 M], добавлен 28.04.2014

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

    курсовая работа [2,2 M], добавлен 14.04.2019

  • Основы организации приложения в Windows. Посылка и передача сообщений для окон. Создание и отображение главного окна приложения. Деактивация приложения, его фазы. Сообщения клавиатуры и функции для работы с ней. Определение состояния отдельных клавиш.

    лекция [65,7 K], добавлен 24.06.2009

  • Описание технологии asp.net. Страницы веб-приложения, тестирование системы. Описание функциональной, динамической модели системы. Диаграммы вариантов использования, последовательности, база данных приложения. Реализация программы, интерфейс, тестирование.

    курсовая работа [3,2 M], добавлен 30.01.2013

  • Анализ создания виртуального окружения для разработки. Установка фреймворка Flask. Особенность настройки аутентификации и привилегий. Создание Python-файла и написание в нем простого веб-приложения. Запуск и проверка работоспособности приложения.

    лабораторная работа [2,1 M], добавлен 28.11.2021

  • Создание клиент-серверного приложения "Чат" с помощью среды визуальной разработки приложений Borland C++ Builder версии 6. Описание функциональности приложения: наличие клиент-серверной архитектуры, обмен короткими сообщениями, а также передача файлов.

    курсовая работа [302,0 K], добавлен 30.01.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.