我有一个具有多个按钮的用户控件。
在page_load
上,除非按下特定按钮,否则我想运行一个方法。
当我检查用户控件内的page_load
上的发件人时,我只获取用户控件的名称,而不是按钮本身。
有没有办法可以确定page_load
上按下了什么按钮?否则我将不得不想出一些解决问题的方法。
答案 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;
}