asp按钮的e.CommandArgument无法使用

20

我正在使用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
}

2
e.CommandArgument 没有意义... 你确定你不是在引用 (sender as Button).CommandArgument 吗? - Tejs
我只想知道哪个按钮被按下了。我想获取被按下的按钮的命令参数。 - liaqat ali
4个回答

41

@Tejs在他的评论中是正确的,看起来你想要这样的东西:

protected void allbuttons_Click(object sender, EventArgs e)
{
    var argument = ((Button)sender).CommandArgument;
}

10

使用

OnCommand = 

并且

protected void allbuttons_Click(object sender, CommandEventArgs e) { }

2

实际上,您不需要传递CommandArgument来知道您按下了哪个按钮。您可以像下面这样获取按钮的ID:

string id = ((Button)sender).ID;

1

您可以按照以下方式将命令文本分配给按钮:

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;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接