我有一个有几个按钮的用户控件。
On page_load
,除非按下特定按钮,否则我想运行一个方法。
当我在用户控件内部检查发件人时page_load
,我只得到用户控件的名称而不是按钮本身。
有没有办法可以确定按下了哪个按钮page_load
?否则我将不得不想出一些hacky方法来解决这个问题。
我有一个有几个按钮的用户控件。
On page_load
,除非按下特定按钮,否则我想运行一个方法。
当我在用户控件内部检查发件人时page_load
,我只得到用户控件的名称而不是按钮本身。
有没有办法可以确定按下了哪个按钮page_load
?否则我将不得不想出一些hacky方法来解决这个问题。
我认为您可以检查Request.Form ("__EVENTTARGET")
-应该包含ClientID
您的控件。
这是指 ASP.NET 事件处理框架用来跟踪用户单击的内容的隐藏字段的值。当用户触发回发时,页面上的一些 JavaScript 会将此隐藏字段设置为ClientID
您在提交表单之前单击的控件的。
您可以在用户控件中创建一个属性以返回单击的按钮(或设置标志或其他),并将其设置在用户控件内的每个按钮的单击事件中吗?
您确定您正确处理了页面模型吗?Page Load 事件发生(以构建服务器端对象模型),然后您的控件将处理绑定到控件的按钮单击事件。
除了单击用户控件中的按钮之外,页面加载可能出于任何数量的回发原因。
页面上其他控件中的按钮呢?
有时这样做是有充分理由的,但我也担心您只是在破解 ASP.NET 页面模型。
这是检查是否按下特定按钮的简单方法:
protected bool isButtonClicked(string buttonName)
{
bool isClicked = false;
foreach (string ctl in this.Request.Form)
{
if (ctl.EndsWith(buttonName))
{
isButtonClicked = true;
break;
}
}
return isClicked;
}