webコントロールのcommandParameterプロパティを介してパラメーターを渡すいくつかのコードを見たことがあります。
これは、異なるボタンに同じEventHandlerメソッドがある場合に役立ちます。たとえば、マークアップが次のようになっているとします。
<asp:Button ID="button1" runat="server" CommandArgument="MyVal1"
CommandName="ThisBtnClick" OnClick="MyBtnHandler" />
<asp:Button ID="button2" runat="server" CommandArgument="MyVal2"
CommandName="ThatBtnClick" OnClick="MyBtnHandler" />
両方のボタンに同じイベントハンドラーを設定し、CommandNameに基づいて区別することができます。
protected void MyBtnHandler(Object sender, EventArgs e)
{
Button btn = (Button)sender;
switch (btn.CommandName)
{
case "ThisBtnClick":
DoWhatever(btn.CommandArgument.ToString());
break;
case "ThatBtnClick":
DoSomethingElse(btn.CommandArgument.ToString());
break;
}
}
.NETのさまざまなボタンタイプのコントロールには、OnCommand
イベントとOnClick
イベントがあります。 OnCommand
イベントを使用する場合、CommandName
やCommandArgument
などの追加のパラメーターをボタンに適用できます。これらはCommandEventArgs
でアクセスできます。
同じメソッドを複数のボタンに割り当て、CommandName
およびCommandArgument
パラメーターを使用して、そのボタンをクリックするとどの機能が生成されるかを示す場合に便利です。
EventArgs
クラスは基本クラスです。他のWebメソッドは他のイベント引数を使用します。
例えばLinkButtonには、デフォルトのEventArgsパラメータを持つOnClickイベントがありますが、いくつかの追加情報(つまり、CommandNameとCommandArgument)を持つCommandEventArgs : EventArgs
パラメータを取るOnCommandイベントもあります。
イベント引数の基本クラスは、すべてのEventHandlerが同様のシグネチャに準拠するように、プレースホルダーとして存在します。