views:

1591

answers:

2

I have a public method in my content page class, I want to call this method from master page class
Thanks

+1  A: 

You can inherit your page from a base class. Then you can create a virtual method in your base class which will get overridden in your page. You can then call that virtual method from the master page like this -

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

Here, cphPage is the ID of the ContentPlaceHolder in your master page. PageBase is the base class containing the YourMethod method.

EDIT: Of course, you'll have to put a null checking before you call the YourMethod method using the page's instance.

Kirtan
Excellant Idea!I already have a base class that is inherited by page, so immediate the problem is solved.
Muhammad Akhtar
Can you plz tell me what's the difference b/w both statement or these are same(cphAdmin.Page as BasePage).yourmethod();BasePage bp = (BasePage)cphAdmin.Page;bp.yourmethod();
Muhammad Akhtar
A: 

if you do not want to use any base page

add this to your master page,

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);
}

then use it

callContentFunction("myPublicMethodName", myParam1, myParam2...);

Tolgahan Albayrak
Reflection must be minimally used in an ASP.NET application especially in the presentation layer. And method invocation is one of the most unoptimized operation of Reflection.
Kirtan
"Reflection must be minimally used in an ASP.NET" why?
Tolgahan Albayrak