内容页面类的方法从母版页类

问题描述:

叫我有一个公共的方法在我的内容页面类,我想打电话从母版页类这种方法
感谢内容页面类的方法从母版页类

+0

如果将cphAdmin.Page作为BasePage执行,则如果转换不成功,则不会抛出NullReferenceException。它会静默地返回null。所以你实际上必须做 - BasePage page = cphAdmin.Page as BasePage); if(null!= page)。如果转换不成功,直接转换运算符将抛出NullReferenceException。 – Kirtan 2009-05-22 10:46:52

+0

你也可以看看这个 - http://gen5.info/q/2008/06/13/prefix-casting-versus-as-casting-in-c/ – Kirtan 2009-05-22 10:49:36

您可以从一个基类继承你的页面。然后你可以在你的基类中创建一个虚拟方法,这个方法会在你的页面中被覆盖。然后,您甚至可以从母版页的虚拟方法是这样 -

(cphPage.Page as PageBase).YourMethod(); 

这里,cphPage是的ContentPlaceHolder在母版页的ID。 PageBase是包含YourMethod方法的基类。

编辑:当然,您必须在使用页面实例调用方法之前进行空检查。

+0

Excellant的想法! 我已经拥有了一个由页面继承的基类,所以立即解决了这个问题。 – 2009-05-20 10:51:26

,如果你不希望使用任何基础页面

添加到您的母版页,

private object callContentFunction(string methodName, params object[] parameters) 
{ 
    Type contentType = this.Page.GetType(); 
    System.Reflection.MethodInfo mi = contentType.GetMethod(methodName); 
    if(mi == null)return null; 
    return mi.Invoke(this.Page, parameters); 
} 

然后用它

callContentFunction( “myPublicMethodName”,myParam1,myParam2 .. );

步骤:

  1. 添加新<%@ MasterType VirtualPath="location of your masterpage" %>指令.aspx页面中

  2. 在母版页中声明了一个公共职能。

  3. 使用Master.functionName()从内容页面调用该功能。