Возможности технологии ASP.NET по созданию распределенных приложений

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

фикатором элемента в коллекции ViewState будет являться ID элемента управления.

Условие if (control.Controls != null && SaveNested) позволяет вызвать функцию SaveTextinTextBox в случае, если текущий элемент управления имеет внутри себя вложенные элементы. Таким образом, функция позволяет осуществить перебор всех элементов управления, которые расположены на странице либо внутри другого элемента, избранного отправной точкой. В нашем примере таковым может являться объект Table1.

Функция чтения значений ViewState и их записи в соответствующие элементы управления может выглядеть следующим образом:

 

private void RestoreTexttoTextBox(ControlCollection controls, bool)

{(Control control in controls)

{(control is TextBox)

{(ViewState[control.ID]!=null)

((TextBox)control).Text=(string)ViewState[control.ID];

}(control.Controls !=null && saveNested)

{(control.Controls,true);

}

}

}

 

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

 

protected void Button1_Click(object sender, EventArgs e)

{sname=string.Empty;tbSname=(TextBox)Page.FindControl("tb_SName");(tbSname!=null)

{= tbSname.Text;

}_Result.Text = "Здравствуйте, "+tb_FirstName.Text+"

"+sname+" "+_LastName.Text+"! Добро пожаловать в приложение ASP.NET";

lbl_Result.ForeColor = Color.Red;

//сохраняем значения полей ввода в коллекции ViewState

SaveTextinTextBox(Table1.Controls, true);_FirstName.Text = "";

tb_LastName.Text = "";

}

Создадим обработчик для события нажатия на кнопку "Восстановить значения полей ввода". Он выглядит следующим образом:

protected void btn_RestoreTextBox_Click(object sender, EventArgs e)

{

RestoreTexttoTextBox(Table1.Controls,true);

}

 

Теперь можно запустить приложение. При вводе значений в поля ввода текста и нажатии на кнопку "Отправить" на экран выводится надпись приветствия, а текст внутри полей ввода уничтожается. После нажатия на кнопку "Восстановить значения полей ввода" поля вновь заполняются текстом, введенным ранее. Это становится возможным благодаря использованию коллекции ViewState.

.asax начало всех начал

 

В совокупности все страницы ASP.NET входят в приложение; оно загружается как только к нему происходит обращение. Для того чтобы узнать это и другие события приложения используется файл global.asax (В VS 2010 global.asax добавляется автоматически и его можно открыть в обозревателе решений).

Добавляем файл в проект

 

 

Если открыть данный файл, то видно что в нем уже есть шаблоны для 5 событий

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

void Application_Start(object sender, EventArgs e) { // Code that runs on application startup }

 

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

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

4. Session_Start - начинается сессия для нового пользователя.

. Session_End - Завершается сессия.

 

Надо отметить что метод Session_End отрабатывает только тогда когда в настройках приложения Session State выставлено в InProc.

Например можно подсчитывать текущее количество пользователей на сайте. Для этого в обработчик события Session Start нужно добавить увеличение счетчика пользователей, а в Session End соответственно уменьшение полный код будет выглядеть так

 

void Application_Start(object sender, EventArgs e) { Application["users"] = 0; } void Application_End(object sender, EventArgs e) { } void Application_Error(object sender, EventArgs e) { } void Session_Start(object sender, EventArgs e) { Application["users"] = Convert.ToInt32(Application["users"]) + 1; } void Session_End(object sender, EventArgs e) { Application["users"] = Convert.ToInt32(Application["users"]) - 1; }

 

Основные контролы Web приложений

 

В Web приложениях кнопка делает постбэк (в HTML это называется submit) на какую-либо страницу (чаще всего на свою же). Основное отличие ASP.NET заключается в том, что по кнопке идет не только постбэк (передача post и get параметров), но так же еще отрабатывает событие Click, которое обрабатывается каким либо методом, то есть после нажатия кнопки не только перезагрузится страница, но и отработает метод подвязанный на событие Click. У кнопки имеются следующие интересные свойства:

- Указывает имя класса стилей из Вашего CSS файла- Надпись на кнопке- Когда true кнопка активна. То есть ее возможно нажать- Хранить или нет состояние элемента во ViewState- Указывается инструкция javascript, которая выполнится при клике по кнопке- Страница, на которую будет выполнен постбэк (передача параметров). Аналог action в тэге form- Всплывающая подсказка- Группа для проверки значений перед постбэком- когда false кнопка не отображается

 

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

Основной обработчик события Click.

При двойном щелчке на кнопку открывается файл с кодом на C#. Если, к примеру, между фигурными скобками дописать Response.Write(Button1.Text); то на экран будет выведен текст на кнопке.

 

protected void Button1_Click(object sender, EventArgs e) { Response.Write(Button1.Text); }

 

Ссылка - HyperLink

Аналог A HREF в HTML, вот ее свойства:

ImageUrl - Адрес картинки, которая будет выступать в качестве ссылки- Текст ссылки- Собственно URL на который будет выполнен переход по ссылке- Определяет куда будет загружена страница (Top, Parent, фрейм и тд)- Служит для отметки какой-либо опции или согласия на какой-либо вопрос на веб странице. По-настоящему полезное свойство лишь одно, собственно для чего он и предназначен, показать отмечен контрол или нет:

- Отмечен контрол или нет- Текст рядом с контролом. (Вопрос или название опции)

<