TOC

This article is currently in the process of being translated into Russian (~99% done).

Основы:

Events

Для разработки веб-приложений ASP.NET использует подход, основанный на событиях (event-driven). В PHP и классическом ASP у вас есть один файл, который исполняется строка за строкой, от начала и до конца. В то же время, ASP.NET отличается от них. Здесь есть события, которые так или иначе активируются пользователем. В предыдущем примере мы использовали метод Page_Load. Фактически, это событие, которое вызывает класс Page (Страница) в момент своей загрузки. Мы будем использовать тот же подход в следующем примере, где мы добавим пару элементов управления (control) к нашему простому "hello world". Чтобы было немного интереснее, мы заменим слово "world" на что-нибудь, заданное пользователем. Взгляните на следующий листинг, где мы добавили два новых элемента управления: кнопку (Button) и поле для ввода текста (TextBox).

<form id="form1" runat="server">
<div>
    <asp:Label runat="server" id="HelloWorldLabel"></asp:Label>
    <br /><br />
    <asp:TextBox runat="server" id="TextInput" /> 
    <asp:Button runat="server" id="GreetButton" text="Say Hello!" />
</div>
</form>

Как вы можете видеть, мы добавили два элемента управления, но на данный момент они еще ничего не делают. Вы можете запустить пример, чтобы убедиться в этом - если кликнуть по кнопке, страница просто перезагрузится. Давайте исправим это, и начнем с простого способа. VS поставляется с редактором WYSIWYG, и хотя сам я редко использую его, он сильно упрощает многие вещи - к примеру, создание событий.

Приступим. Нажмите кнопку Design (Дизайн) в нижней части VS. Теперь вы видите визуальное представление нашей страницы. Мы хотим добавить событие Click (нажатие) для кнопки, и это очень просто - просто дважды щелкните по кнопке GreetButton, и вас перенаправит к файлу CodeBehind для нашей страницы. Как вы можете видеть, в файл уже добавился новый правильный метод с именем GreetButton_Click. Если вы заглянете в файл Default.aspx (нужно перейти из режима Design в режим Source (Код)), то увидите, что к нашей кнопке добавился атрибут, показывающий, какой метод следует вызвать при нажатии на кнопку. И вся эта работа была проделана с помощью простого двойного клика.

Теперь давайте добавим немного кода к нашему новому событию. Мы хотим использовать текст из TextBox для нашей старой доброй метки Label с текстом "Hello, world!". Это тоже очень просто, и все что нам потребуется - одна строчка кода:

HelloWorldLabel.Text = "Hello, " + TextInput.Text;

Запустите проект еще раз (Ctrl+F5), и вы увидите нашу старую страницу в парой новых элементов. Текст "Hello, world!" все еще на своем месте, поскольку мы задали его в событии Page_Load. Теперь попробуйте ввести имя в TextBox и нажать кнопку. Вуаля, текст изменился, а мы воспользовались своим первым событием. Обратите внимание, как мы можем добавлять код, который не вызывается, пока пользователь не выполнит определенное действие. Это и есть отличие от доброго старого Классического подхода ASP/PHP, но вы скоро к этому привыкните, и скорее всего, полюбите!

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!