2011-04-16 63 views
6

有更多的问题和文章关于同一确切的问题,但我有一个更多的相关问题,并希望得到一些答案。如何处理内容页面中的母版页按钮事件?

  1. 我听说过两种方法来找到按钮,添加处理程序,或使用你的建议是哪一个接口(从here检查这两种方法)..?

  2. 如果你可以请说明'接口'选项与一些代码和接口文件的类,因为它是不可读的页面时,当我尝试继承它!

+0

感谢您的有用链接! – windowskm 2012-08-16 08:11:06

回答

7

第二个问题是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(); 
      } 
     } 
    } 
} 

还有其它的方法。例如。您可以通过event broker发布活动。

+0

好吧,这很好,但我有一个问题..什么是放置接口文件的正确位置..我正在使用N层体系结构PL,BLL,DAL?我真的被困在这个细节中,因为即使我把它放在同一个文件夹中,或者甚至尝试添加一个App_Data文件夹,我的页面代码也不会看到我的界面! – lKashef 2011-04-16 15:06:13

+0

您是否使用网站或Web应用程序项目? – 2011-04-16 15:08:24

+0

Web应用程序 – lKashef 2011-04-16 15:10:01

0

看到我的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///// 
} 

要通过这种方式给予一定的灵活性如果将来您想要通过某些数据游览内容页面时,点击..很容易。

+0

我真的很感谢你的演唱会..但你是否为你的博客做广告:S:D !!? – lKashef 2011-04-16 16:07:19

相关问题