从用户控件调用母版页功能?

时间:2011-11-17 18:44:03

标签: asp.net

搜索Google后,我发现了一种从用户控件调用母版页功能的方法:

  1. 创建包含方法的界面。
  2. 在母版页中实施界面
  3. 从您的控件中,通过界面类型引用this.Page.Master。
  4. 打电话给你的方法。
  5. 这是一个很好的方法,但我不知道我可以用这种方式调用母版静态函数。

    另一种方法是:

    // this is also good.
    ((MyMaster)this.Page.Master).MyFunction(); 
    

    但我听说这也可以通过一个活动来完成。

    1)有人能告诉我如何通过事件从用户控件调用母版页功能吗? 2)另外,如何通过上面解释的通用接口方式调用母版静态函数。

2 个答案:

答案 0 :(得分:3)

我认为最好让您的用户控件引发一个事件并让您的页面监听该事件,然后调用母版页功能。控件不应该知道实现它们的事情 - 包括页面是否有母版页。

答案 1 :(得分:1)

在您的内容页面中,使用MasterType指令生成主类型。然后,您可以在内容页面中使用公开的Master属性而不进行强制转换。如果要从内容中调用master中的静态函数,则需要使用master的代码隐藏类的名称来调用它(因为它是静态的)

内容页面:

<%@ Page MasterPageFile="~/dir1/master1.master" ....... %>
<%@ MasterType VirtualPath="~/dir1/master1.master" %> <!--This technique might change between .net versions. This is testing on 3.5-->

内容page.cs

this.Master.nonStaticFunc();
dir1_master1.staticFunc();