确定哪个控件引发了回发

时间:2011-11-21 10:18:18

标签: c# asp.net postback

如何检查asp.net Web应用程序中的哪个控件引发回发?

我有许多按钮,并希望在Page_Load方法中执行不同的任务,具体取决于单击了哪个按钮。

3 个答案:

答案 0 :(得分:1)

要检查哪个控件导致回发,请使用Request.Form [“__ EVENTTARGET”]。这应该返回导致回发的控件的唯一ID。

修改 为此,您必须将按钮的UseSubmitBehavior属性设置为false,这会导致它使用Asp Net回发机制

  

使用UseSubmitBehavior属性指定Button控件是使用客户端浏览器的提交机制还是ASP.NET回发机制。默认情况下,此属性的值为true,从而导致Button控件使用浏览器的提交机制。如果指定false,则ASP.NET页面框架将客户端脚本添加到页面以将表单发布到服务器。

     

当UseSubmitBehavior属性为false时,控件开发人员可以使用GetPostBackEventReference方法返回Button的客户端回发事件。 GetPostBackEventReference方法返回的字符串包含客户端函数调用的文本,可以插入到客户端事件处理程序中。

From MSDN

答案 1 :(得分:1)

您可以从' __ EVENTTARGET'获取回发控制ID。要求中的价值。 PARAMS

请查看以下article

答案 2 :(得分:0)

在按钮的方法处理程序中,事件它包含对按钮的引用,因此您可以访问控件ID:

protected void Button1_Click(object sender, EventArgs e)
{
  ((System.Web.UI.WebControls.Button)sender).ID
}

EventArgs参数包含命令名称,可用于标识您需要执行的操作:

if (e.CommandName == "AddToCart")
{   
    Do something
}