我们怎样才能找到在Master页面中触发的控件,该页面还有一个代码隐藏的面板? 我有以下布局。
Master Page
+---------Panel-----------+
| TextBox Button1 Button2|
+-------------------------+
|
-------->Child Page
+-------------------------+
| Get From Here! |
+-------------------------+
当我尝试以下操作时,targetId为空
if (IsPostBack)
{
var targetID = Request.Form["__EVENTTARGET"];
if (targetID != null && targetID != string.Empty)
{
var targetControl = this.Page.FindControl(targetID);
}
}
我想知道哪个按钮会导致回发。
我在没有成功的情况下尝试过以下链接。
答案 0 :(得分:0)
您可以使用MasterPage提供的event
与网页进行通信。
在MasterPage
内创建类似
public event EventHandler Button1ClickEvent;
public event EventHandler Button2ClickEvent;
这里发生的是您正在创建一个事件,MasterPage可以检查正在侦听的页面并向该页面发送事件以发出已被调用的信号。在这种情况下,EventHandler
表示您将EventArgs
传递给事件监听器。
你通过这样做发送一个事件
protected void Button1_Click(object sender, EventArgs e)
{
if (Button1ClickEvent != null) // check if a sub page is implementing it
Button1ClickEvent(this, EventArgs.Empty); // fire the event off
}
protected void Button2_Click(object sender, EventArgs e)
{
if (Button2ClickEvent != null)
Button2ClickEvent(this, EventArgs.Empty);
}
接下来,连接您的Page
以实施这些活动
将此添加到您的页面定义
<%@ MasterType VirtualPath="~/MasterPage.master" %>
现在,您可以在页面代码隐藏
中访问这些事件private void Master_Button1Click(object sender, EventArgs e)
{
// This is called when the `Button1ClickEvent` is fired from your MasterPage
}
private void Master_Button2Click(object sender, EventArgs e)
{
// This is called when the `Button2ClickEvent` is fired from your MasterPage
}
protected void OnInit(EventArgs e)
{
// Setup an event handler for the buttons
Master.Button1ClickEvent += new EventHandler(Master_Button1Click);
Master.Button2ClickEvent += new EventHandler(Master_Button2Click);
}