|
|
|
Мы живем в эпоху инетерактивных Веб-приложений. Это значит, что мы не только доставляем информацию пользователю, но и позволяем ему контролировать процесс. В настольных приложениях все решается просто, ибо весь код приложения непосредственно доступен. В интернет-приложениях все сложнее - мы не можем непосредственно вызывать код на сервере с клиента. Код на сервере может быть запущен только в ответ на некоторый запрос с клиента.
Рассмотрим сначала как осуществляется обработка пользовательского ввода в настольных приложениях. При нажатии на кнопку, смену активного пункта меню генерируется сообщение о совершении этого действия. Механизм сообщений является очень удобным, в частности, из-за его асинхронности.
При разработке ASP.NET Microsft перенесла идеологию сообщений на Web-приложения. Передача сообщений осуществляется через специальные аттрибуты в запросе. На сервере они декодируются и на основании информации о сообщении вызываются соответствующие обработчики.
При всем этом надо заметить, что со стороны разработчика весь этот механизм крайне прост - во-первых, потому что процесс передачи сообщения скрыт и мы просто говорим "мы хотим обработать это сообщение", а во-вторых благодаря наличию механизма обработки сообщений в .NET Framework, что позволяет обрабатывать эти сообщения как и все другие, к тому же в .NET-языках обработка сообщений интегрирована на уровне синтаксиса.
Разумеется, перенос сообщений на страницы интернет накладывает некоторые ограничения на свободу действия. Например, не стоит обрабатывать сообзщение о перемещении мыши - оно возникает слишком часто.
Для пояснения о том, как обрабатывать сообщения, рассмотрим пример обработки сообщения Click для кнопки.
Рассмотрим страницу со следующим кодом:
<%@ Page Src="separate.cs" Inherits="Separate" %>
<form runat="server">
<asp:Label id="lblMessage" runat="server" />
<asp:Button id="btnSubmit" runat="server" onclick="btnSubmit_Click" text="submit" />
</form>
|
К ней прилагается файл с кодом:
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public class Separate : Page
{
protected Label lblMessage;
protected Button btnSubmit;
public void btnSubmit_Click( object sender, EventArgs e )
{
lblMessage.Text = "Hello, world";
}
}
|
Мы ее уже рассматривали в предыдущей части, но сейчас мы на нее посмотрим с точки зрения обработки сообщений - а именно - обработка нажатия на кнопку submit. В этой странице продемонстрирован первый способ привязки обработчиков к сообщениям - указание имени обработчика в соответствующем аттрибуте серверного элемента управления. В данном случае - onclick.
Но есть и второй способ (и намного более удобный и гибкий) - привязка обработчиков в коде. Это осуществляется единожды при инициализации страницы. Поясним все в коде - модифицируем нашу страницу, чтобы она использовала второй способ.
<%@ Page Src="separate.cs" Inherits="Separate" %>
<form runat="server">
<asp:Label id="lblMessage" runat="server" />
<asp:Button id="btnSubmit" runat="server" text="submit" />
</form>
|
Вот код:
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public class Separate : Page
{
protected Label lblMessage;
protected Button btnSubmit;
override protected void OnInit( EventArgs e )
{
btnSubmit.Click += new EventHandler(btnSubmit_Click);
}
public void btnSubmit_Click( object sender, EventArgs e )
{
lblMessage.Text = "Hello, world2";
}
}
|
Как видно, мы теперь не прописываем аттрибут. а при инициализации страницы добавляем делегата для обработки сообщения.
| << Предыдущая | Следующая >> |
| Контакт | Реклама на сайте | Спонсорам | Веб мастерам |
Лицензионное соглашение
- © 2000-2012 dotSITE
Хостинг .NET предоставлен
PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development