问题描述
|
我正在使用C#开发asp.net应用程序。
我创建了一个.aspx页面,并在页面的不同位置放置了四个按钮。
在服务器端,我只希望对所有四个按钮使用一次单击事件。
这是我的代码:
aspx页面
<asp:Button ID=\"Button1\" runat=\"server\" CommandArgument=\"Button1\" onClick = \"allbuttons_Click\" />
<asp:Button ID=\"Button2\" runat=\"server\" CommandArgument=\"Button2\" onClick = \"allbuttons_Click\" />
<asp:Button ID=\"Button3\" runat=\"server\" CommandArgument=\"Button3\" onClick = \"allbuttons_Click\" />
<asp:Button ID=\"Button4\" runat=\"server\" CommandArgument=\"Button4\" onClick = \"allbuttons_Click\" />
CS页面
protected void allbuttons_Click(object sender,EventArgs e)
{
//Here i want to kNow which button is pressed
//e.CommandArgument gives an error
}
解决方法
@Tejs在他的评论中是正确的,看起来您想要这样的东西:
protected void allbuttons_Click(object sender,EventArgs e)
{
var argument = ((Button)sender).CommandArgument;
}
,采用
OnCommand =
和
protected void allbuttons_Click(object sender,CommandEventArgs e) { }
,实际上,您根本不需要传递CommandArgument即可知道您按下了哪个按钮。您可以获取按钮的ID,如下所示:
string id = ((Button)sender).ID;
,您可以按如下所示将命令文本分配给按钮:
protected void allbuttons_Click(Object sender,CommandEventArgs e) {
switch(e.CommandName) {
case \"Button1\":
Message.Text = \"You clicked the First button\";
break;
case \"Button2\":
Message.Text = \"You clicked the Second button\";
break;
case \"Button3\":
Message.Text = \"You clicked Third button\";
break;
case \"Button4\":
Message.Text =\"You clicked Fourth button\";
break;
}
}