我过去在页面上使用IPostBackEventHandler
通过RaisePostBackEvent
在我的代码中调用javascript
。
我目前正在开发一个需要相同功能的项目,但是如果我能把它放在我的MasterPage
中会非常酷,我尝试的方式相同,但我没有运气,我想知道是否有人能指出我的仪式方向。
MasterPage
声明:
public partial class Master_Pages_MainMasterPage : System.Web.UI.MasterPage, IPostBackEventHandler
{
public void RaisePostBackEvent(string eventArgument)
{
// do stuff
}
}
我的Javascript:
function myFunction{
var pageId = '<%= Page.ClientID %>';
__doPostBack(pageId, 'savePageContent');
}
我的测试页:
public partial class TestPage : System.Web.UI.Page
{
}
我也试过将IPostBackEventHandler
添加到TestPage,遗憾的是没有运气。
任何人都可以帮助我,或者我对使用MasterPage
无法实现的事实一无所知?
此致
P.S。我知道我可以这样做(在我的TestPage中):
public void RaisePostBackEvent(string eventArgument)
{
Master_Pages_MainMasterPage myMaster = (Master_Pages_MainMasterPage)this.Master;
myMaster.RaisePostBackEvent(eventArgument);
}
对于使用MasterPage
的每一页,我真的不想做这件事。
另外,忽略变量命名,我刚刚提出了这个问题。
答案 0 :(得分:1)
老实说,我认为在您的母版页中实现IPostBackEventHandler
界面并不是一个好主意,因为RaisePostBackEvent
几乎总是特定于页面,与控件或事件有关。页。
System.Web.UI.Page
已经实现了IPostBackEventHandler
接口,因此您无需在每个页面上实现它 - 它已经存在。
您可以在页面上覆盖RaisePostBackEvent
方法,如下所示:
protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
{
//call the RaisePostBack event
base.RaisePostBackEvent(source, eventArgument);
if (source == SomeControl)
{
//do something
}
}