确定用户控件内的哪个按钮发送了该事件

时间:2008-11-18 00:56:34

标签: asp.net user-controls onload

我有一个具有多个按钮的用户控件。

page_load上,除非按下特定按钮,否则我想运行一个方法。

当我检查用户控件内的page_load上的发件人时,我只获取用户控件的名称,而不是按钮本身。

有没有办法可以确定page_load上按下了什么按钮?否则我将不得不想出一些解决问题的方法。

4 个答案:

答案 0 :(得分:2)

我认为您可以查看Request.Form ("__EVENTTARGET") - 应该包含您控件的ClientID

这指的是ASP.NET事件处理框架用于跟踪用户单击内容的隐藏字段的值。当用户触发回发后,页面上的某些JavaScript会将此隐藏字段设置为您在提交表单之前单击的控件的ClientID

答案 1 :(得分:0)

您可以在用户控件中创建一个属性来返回单击的按钮(或设置一个标志或其他),在用户控件内的每个按钮的单击事件中设置它吗?

答案 2 :(得分:0)

您确定正确处理页面模型吗?发生页面加载事件(构建服务器端对象模型),然后您的控件将处理绑定到控件的按钮单击事件。

除了点击用户控件中的按钮之外,页面加载还可以出现任意数量的回发原因。

页面上其他控件中的按钮怎么样?

有时候有充分的理由这样做,但我也担心你只是在浏览ASP.NET页面模型。

答案 3 :(得分:0)

这是检查特定按钮是否被按下的简单方法:

protected bool isButtonClicked(string buttonName)
    {
        bool isClicked = false;
        foreach (string ctl in this.Request.Form)
        {
            if (ctl.EndsWith(buttonName))
            {
                isButtonClicked = true;
                break;
            }
        }
        return isClicked;
    }