我已在Button
Master Page
上对Content Page
控件进行了连接,如下所示:
SiteMaster MasterPage;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
MasterPage = (SiteMaster)Page.Master;
MasterPage.Button1.Click += new EventHandler(Button1_Click);
}
}
void Button1_Click(object sender, EventArgs e)
{
MasterPage.Button1_Click(sender, e);
}
但是,每当我点击页面上的Button1
(在localhost下运行)时,Page_Load
事件就会触发!
我做错了什么?
如果有帮助,MasterPage.Button1_Click
事件会运行一个登录脚本,因此不应该有递归调用。
答案 0 :(得分:2)
这里的问题是处理程序Button1_Click
没有为你开火吗?
如果是这样,原因是你只是在初始页面加载时为Click
事件分配事件处理程序,而不是在页面回发时分配。
尝试在初始加载和后续回发时分配事件处理程序,如下所示:
protected void Page_Load(object sender, EventArgs e)
{
MasterPage = (SiteMaster)Page.Master;
MasterPage.Button1.Click += new EventHandler(Button1_Click);
}
希望这有帮助。
答案 1 :(得分:1)
也许你想在Page_Init中连接你的事件而不是Page_Load。
至于您的按钮单击导致Page_Load触发。 Page_Load总是会被解雇,因为它是页面生命周期的一部分。
请参阅:http://support.microsoft.com/kb/305141了解页面生命周期详情。
Page_Init:在此活动期间,您可以初始化值或连接您可能拥有的任何事件处理程序。
另见问题:In asp.net, page_load occuring before radio button OnCheckedChanged event