2011-11-17 58 views
5

Es necesario llamar a la función de página de contenido desde la página maestra. Háganme saber si se necesitan más datos.Cómo llamar a la función de página de contenido desde la página maestra

MasterPage.master.cs parece

protected void Required_Function(object sender, EventArgs e) 
{ 
    // call Update_Content_Page() from content page 
} 

Default.aspx parece

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="contentPlaceHolder" Runat="Server"> 

<asp:Label ID="Label1" runat="server" Text="Label">Hello people!</asp:Label> 

</asp:Content> 

Default.aspx.cs parece

using… 
public partial class _Default : System.Web.UI.Page 
{ 
    protected void Update_Content_Page() 
    { 
     Label1.Text=”Hello world”; 
    } 
} 
+1

posible duplicado de [Método de llamada en página maestra] (http://stackoverflow.com/questions/6332889/call-method-in-master-page) –

+2

No lo es. Estoy preguntando cómo llamar a la función de página de contenido desde la página maestra, no al revés. –

+0

Es lo mismo en principio. –

Respuesta

6

se puede tratar de esta manera. . No exactamente, pero te ayudará ...

Puede heredar su página de una clase base. Luego puede crear un método virtual en su clase base que será anulado en su página. A continuación, puede llamar a ese método virtual de la página maestra como esto -

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

Aquí, cphPage es el ID de la ContentPlaceHolder en su página maestra. PageBase es la clase base que contiene el método YourMethod.

+0

Podría funcionar, pero este enfoque es demasiado complejo. Lo intentaré la próxima vez. Tal vez :) Pero muchas gracias de todos modos. –

+0

¿Puede explicar por favor que no puedo entender? Verifique esto - http://stackoverflow.com/questions/13508855/accessing-content-page-method-from-masterpage-method –

1

Normalmente encuentro que cuando la página maestra necesita llamar a una función en una página de contenido, tiene un error en el diseño de la página. La página maestra no debería necesitar saber nada sobre las páginas de contenido. Pero si crees que este es el camino correcto para ti aquí hay un guide de CodeProject

+0

Parcialmente de acuerdo con usted. En el 90% de los casos funcionaría exageradamente como dijiste. Pero no existe tal cosa como "talla única". Consulte el ejemplo que se proporcionó en una de las siguientes respuestas: http://www.asp.net/master-pages/tutorials/interacting-with-the-content-page-from-the-master-page-cs –

+0

Sí , tienes razón :) A veces necesitas cambiar las reglas un poco para obtener el resultado que deseas. Pero es importante saber cuándo haces esto, y por qué :) –

1

Personalmente hice un truco usando jquery: cuando hice clic en el botón maestro, de hecho hizo clic en el botón de la página de contenido llamado 'saveButton' y se utiliza su función:

HTML:

enter code here 

código .master jQuery:

function tester() { 
     console.log("Testing"); 
     $("[id$='SaveButton']").click(); 
    } 

solía ID = $ 'SaveButton porque una Como ya sabrá, ASP.NET cambia el nombre de los controles cuando están dentro de un maestro, un repetidor, una vista de cuadrícula y otros controles que lo contienen. $ id = 'cosas' valida que el ID de control termine con 'cosas'.

Cuestiones relacionadas