如何处理内容页面中的母版页按钮事件?

关于同样的问题不仅仅是问题和文章,而是我还有一些相关的问题,希望得到一些答案。

  1. 我听说有两种方法可以找到按钮并添加处理程序或使用界面(从这里检查两种方法)。你建议哪一种?

  2. 如果你能用一些代码来说明’Interface’选项,那么在接口文件的类中,当我尝试inheritance它时,它在页面中是不可读的!

第二个方法是IMO更好。 第一个选择是将页面耦合到特定的母版页,这并不好。

所有文件都放在同一个文件夹中。

IPageInterface.cs:

namespace CallFromMasterPage { public interface IPageInterface { void DoSomeAction(); } } 

Default.aspx.cs:

 namespace CallFromMasterPage { public partial class Default : System.Web.UI.Page, IPageInterface { public void DoSomeAction() { throw new NotImplementedException(); } } } 

Site.Master.cs:

 namespace CallFromMasterPage { public partial class SiteMaster : System.Web.UI.MasterPage { protected void Button1_Click(object sender, EventArgs e) { IPageInterface pageInterface = Page as IPageInterface; if (pageInterface != null) { pageInterface.DoSomeAction(); } } } } 

还有其他方法。 例如,您可以通过事件经纪人发布活动 。

请参阅From My Openion,最好使用事件处理程序……甚至使用自定义委托。

像这样

 public delegate ReturnType MasterPageButtonHandler(CustomEventArgs ObjPriargs); public event MasterPageButtonHandler MasterPagebuttonClick; . . . . Button.click+=new EventHandler(Button1_Click); . . . protected void Button1_Click(Object sender,EventArgs e) { if(MasterPagebuttonClick!=null) { CustomEventArgs ObjPriargs=new CustomEventArgs(); ObjPriargs.Property1=SomeValu1; ObjPriargs.Property2=SomeValu2; MasterPagebuttonClick.Invoke(ObjPriargs); } } . . . public class CustomEventArgs { Public DataType Property1{get;set;} Public DataType Property2{get;set;} Public DataType Property3{get;set;} } . . . // Now in your aspx Page MyMaster m=Page.Master as MyMaster; m.MasterPagebuttonClick+=new MasterPageButtonHandler(MasterPageHandler_Click); . . . protected void MasterPageHandler_Click(CustomEventArgs ObjPriargs) { //You code///// } 

通过这种方式提供一些灵活性,如果在将来你想要在点击时传递一些数据旅游内容页面的情况下很容易。