1

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

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

当我在用户控件内部检查发件人时page_load,我只得到用户控件的名称而不是按钮本身。

有没有办法可以确定按下了哪个按钮page_load?否则我将不得不想出一些hacky方法来解决这个问题。

4

4 回答 4

2

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

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

于 2008-11-18T01:10:58.820 回答
0

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

于 2008-11-18T01:07:15.630 回答
0

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

除了单击用户控件中的按钮之外,页面加载可能出于任何数量的回发原因。

页面上其他控件中的按钮呢?

有时这样做是有充分理由的,但我也担心您只是在破解 ASP.NET 页面模型。

于 2008-11-18T01:16:40.307 回答
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;
    } 
于 2009-02-10T22:55:51.063 回答