内容页面类的方法从母版页类
答
您可以从一个基类继承你的页面。然后你可以在你的基类中创建一个虚拟方法,这个方法会在你的页面中被覆盖。然后,您甚至可以从母版页的虚拟方法是这样 -
(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 .. );
答
步骤:
添加新
<%@ MasterType VirtualPath="location of your masterpage" %>
指令.aspx页面中在母版页中声明了一个公共职能。
使用
Master.functionName()
从内容页面调用该功能。
如果将cphAdmin.Page作为BasePage执行,则如果转换不成功,则不会抛出NullReferenceException。它会静默地返回null。所以你实际上必须做 - BasePage page = cphAdmin.Page as BasePage); if(null!= page)。如果转换不成功,直接转换运算符将抛出NullReferenceException。 – Kirtan 2009-05-22 10:46:52
你也可以看看这个 - http://gen5.info/q/2008/06/13/prefix-casting-versus-as-casting-in-c/ – Kirtan 2009-05-22 10:49:36