2011-06-13 18 views

Respuesta

36

Desde dentro de la Page puede convertir la página Master a un tipo específico (el tipo de su propia Master que expone la funcionalidad deseada), utilizando as a otro paso alguna excepción en los desajustes de tipo:

var master = Master as MyMasterPage; 
if (master != null) 
{ 
    master.Method(); 
} 

En el código anterior, si Master no es del tipo MyMasterPage continuación master habrá null y se intentará realizar ninguna llamada al método; de lo contrario, se llamará como se esperaba.

+0

+1 para el manejo inválido del elenco. –

+2

Echa un vistazo a la respuesta de Uwe Keim primero; Me pareció muy simple de usar. – Tim

5
MyMasterPageType master = (MyMasterPageType)this.Master; 
master.MasterPageMethod(); 
+0

¿Puede agregar esto como un miembro estático en la parte superior de su página? – suggy1982

+0

No es un miembro estático, porque la página maestra es específica de la página que actualmente maneja la solicitud. Sin embargo, podría hacer una propiedad de instancia para la página maestra: 'private MyMasterPageType master {get {return (MyMasterPageType) this.Master; }} ' –

10

Usted puede simplemente hacer como ...

MasterPageClassName MasterPage = (MasterPageClassName)Page.Master; 
MasterPage.MasterMethod(); 

Compruebe si hay detalles ACCESS A METHOD IN A MASTER PAGE WITH CODE-BEHIND

+0

¿Se puede agregar esto como un miembro estático en la parte superior de la página? – suggy1982

13

Uso del MasterType directive como por ejemplo:

<%@ MasterType VirtualPath="~/masters/SourcePage.master" %> 

continuación, puede utilizar el método de la siguiente manera:

Master.Method(); 
Cuestiones relacionadas