Возможности технологии 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, фрейм и тд)- Служит для отметки какой-либо опции или согласия на какой-либо вопрос на веб странице. По-настоящему полезное свойство лишь одно, собственно для чего он и предназначен, показать отмечен контрол или нет:
- Отмечен контрол или нет- Текст рядом с контролом. (Вопрос или название опции)
<