Asp.net-event-handling
ASP.NET-イベント処理
イベントは、マウスのクリック、キーの押下、マウスの動き、またはシステムによって生成された通知などのアクションまたは発生です。 プロセスはイベントを介して通信します。 たとえば、割り込みはシステム生成のイベントです。 イベントが発生すると、アプリケーションはそれに応答して管理できる必要があります。
クライアントマシンで発生し、サーバーマシンで処理されるASP.NETのイベント。 たとえば、ユーザーはブラウザに表示されたボタンをクリックします。 Clickイベントが発生します。 ブラウザは、このクライアント側イベントをサーバーに送信することで処理します。
サーバーには、イベントが発生したときの処理を記述するサブルーチンがあります。イベントハンドラと呼ばれます。 したがって、イベントメッセージがサーバーに送信されると、Clickイベントにイベントハンドラーが関連付けられているかどうかがチェックされます。 存在する場合、イベントハンドラーが実行されます。
イベント引数
ASP.NETイベントハンドラーは通常、2つのパラメーターを取り、voidを返します。 最初のパラメーターはイベントを発生させるオブジェクトを表し、2番目のパラメーターはイベント引数です。
イベントの一般的な構文は次のとおりです。
private void EventName (object sender, EventArgs e);
アプリケーションイベントとセッションイベント
最も重要なアプリケーションイベントは次のとおりです。
- Application_Start -アプリケーション/ウェブサイトの起動時に発生します。
- Application_End -アプリケーション/ウェブサイトが停止すると発生します。
同様に、最も使用されるセッションイベントは次のとおりです。
- Session_Start -ユーザーが最初にアプリケーションからページを要求したときに発生します。
- Session_End -セッションが終了すると発生します。
ページおよびコントロールイベント
一般的なページおよび制御イベントは次のとおりです。
- DataBinding -コントロールがデータソースにバインドするときに発生します。
- Disposed -ページまたはコントロールが解放されると発生します。
- エラー-これはページイベントであり、未処理の例外がスローされたときに発生します。
- Init -ページまたはコントロールが初期化されるときに発生します。
- Load -ページまたはコントロールがロードされると発生します。
- PreRender -ページまたはコントロールがレンダリングされるときに発生します。
- アンロード-ページまたはコントロールがメモリからアンロードされると発生します。
コントロールを使用したイベント処理
すべてのASP.NETコントロールはクラスとして実装され、ユーザーが特定のアクションを実行すると発生するイベントがあります。 たとえば、ユーザーがボタンをクリックすると、「Click」イベントが生成されます。 イベントを処理するために、組み込みの属性とイベントハンドラがあります。 イベントハンドラは、イベントに応答して適切なアクションを実行するようにコーディングされています。
既定では、Visual StudioはSubプロシージャにHandles句を含めることでイベントハンドラーを作成します。 この句は、プロシージャが処理するコントロールとイベントに名前を付けます。
ボタンコントロールのASPタグ:
<asp:Button ID="btnCancel" runat="server" Text="Cancel"/>
Clickイベントのイベントハンドラー:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Handles btnCancel.Click
End Sub
イベントは、Handles句なしでコーディングすることもできます。 次に、コントロールの適切なイベント属性に従ってハンドラーに名前を付ける必要があります。
ボタンコントロールのASPタグ:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" Onclick="btnCancel_Click"/>
Clickイベントのイベントハンドラー:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs)
End Sub
一般的な制御イベントは次のとおりです。
Event | Attribute | Controls |
---|---|---|
Click | OnClick | Button, image button, link button, image map |
Command | OnCommand | Button, image button, link button |
TextChanged | OnTextChanged | Text box |
SelectedIndexChanged | OnSelectedIndexChanged | Drop-down list, list box, radio button list, check box list. |
CheckedChanged | OnCheckedChanged | Check box, radio button |
フォームによっては、すぐにサーバーにポストバックされるイベントもあります。これらはポストバックイベントと呼ばれます。 たとえば、Button.Clickなどのクリックイベント。
一部のイベントはすぐにサーバーにポストバックされず、これらは非ポストバックイベントと呼ばれます。
たとえば、TextBox.TextChangedやCheckBox.CheckedChangedなどの変更イベントまたは選択イベント。 AutoPostBackプロパティをtrueに設定することにより、非ポストバックイベントをすぐにポストバックすることができます。
デフォルトのイベント
PageオブジェクトのデフォルトイベントはLoadイベントです。 同様に、すべてのコントロールにはデフォルトイベントがあります。 たとえば、ボタンコントロールのデフォルトイベントはClickイベントです。
デザインビューでコントロールをダブルクリックするだけで、Visual Studioで既定のイベントハンドラーを作成できます。 次の表に、一般的なコントロールのデフォルトイベントの一部を示します。
Control | Default Event |
---|---|
AdRotator | AdCreated |
BulletedList | Click |
Button | Click |
Calender | SelectionChanged |
CheckBox | CheckedChanged |
CheckBoxList | SelectedIndexChanged |
DataGrid | SelectedIndexChanged |
DataList | SelectedIndexChanged |
DropDownList | SelectedIndexChanged |
HyperLink | Click |
ImageButton | Click |
ImageMap | Click |
LinkButton | Click |
ListBox | SelectedIndexChanged |
Menu | MenuItemClick |
RadioButton | CheckedChanged |
RadioButtonList | SelectedIndexChanged |
例
この例には、ラベルコントロールとボタンコントロールのある単純なページが含まれています。 Page_Load、Page_Init、Page_PreRenderなどのページイベントとして 行われると、ラベルコントロールによって表示されるメッセージを送信します。 ボタンがクリックされると、Button_Clickイベントが発生し、ラベルに表示されるメッセージも送信されます。
新しいWebサイトを作成し、コントロールツールボックスからラベルコントロールとボタンコントロールをドラッグします。 プロパティウィンドウを使用して、コントロールのIDを.lblmessageとして設定します。 および.btnclick。 それぞれ。 ButtonコントロールのTextプロパティを「Click」として設定します。
マークアップファイル(.aspx):
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="eventdemo._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblmessage" runat="server" >
</asp:Label>
<br/>
<br/>
<br/>
<asp:Button ID="btnclick" runat="server" Text="Click" onclick="btnclick_Click"/>
</div>
</form>
</body>
</html>
デザインビューをダブルクリックして、コードビハインドファイルに移動します。 Page_Loadイベントは、コードなしで自動的に作成されます。 次の自明のコード行を書き留めます。
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace eventdemo {
public partial class _Default : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
lblmessage.Text += "Page load event handled. <br/>";
if (Page.IsPostBack) {
lblmessage.Text += "Page post back event handled.<br/>";
}
}
protected void Page_Init(object sender, EventArgs e) {
lblmessage.Text += "Page initialization event handled.<br/>";
}
protected void Page_PreRender(object sender, EventArgs e) {
lblmessage.Text += "Page prerender event handled. <br/>";
}
protected void btnclick_Click(object sender, EventArgs e) {
lblmessage.Text += "Button click event handled. <br/>";
}
}
}
ページを実行します。 ラベルには、ページの読み込み、ページの初期化、およびページの事前レンダリングイベントが表示されます。 ボタンをクリックして、効果を確認します。