Colabora .NET |
Otra forma de acceder a las propiedades de una Master PageAcceder por código directamente a las propiedades y métodos de una página maestra de ASP.NET 2.0
Fecha: 08/Sep/2006 (08/09/06)
|
IntroducciónEn ésta misma web, me leí el artículo que pretendo complementar. Dicho artículo es "Acceder a las propiedades de una Master Page". Lo estuve probando y no me funcionaba del todo bien, así que investigué un poco, hice algunas pruebas y al final se encendió la luz. DesarrolloLa idea es que, como todo en .NET, la MasterPage es un objeto. Cómo tal, si declaras una propiedad pública ésta debe ser visible desde fuera. Cualquier página que haga uso de la MasterPage debe poder acceder a sus propiedades públicas. De hecho, dicha página que la usa tiene la propiedad this.Master que devuelve un tipo MasterPage que está asociado a la página en cuestión. Como devuelve un tipo MasterPage genérico, lo convertimos al tipo de nuestra MasterPage particular. De ésta forma, no es necesario incluir ninguna directiva en el código HTML. Es decir, no es necesario incluir en el código ninguna de las dos directivas: <%@MasterType VirtualPath="~/MasterPage.master"%> Para que quede más claro escribiré un poco de código. Ejemplo:En la MasterPage únicamente codificamos la propiedad que queremos que sea pública. Para seguir con el artículo al que hago referencia, codificaremos la propiedad título en la MasterPage: Para Visual Basic 2005: Partial Class MasterPage Inherits System.Web.UI.MasterPage Private m_Titulo As String Public Property Titulo() As String Get Return m_Titulo End Get Set(ByVal value As String) m_Titulo = value Me.H1Titulo.InnerText = value End Set End Property End Class Para C# 2005: public partial class MasterPage2 : System.Web.UI.MasterPage { protected void Page_Load(object sender, EventArgs e) { } private string m_Titulo; public string Titulo { get { return m_Titulo; } set { m_Titulo = value; this.H1Titulo.InnerText = value; } } } Ahora en la página que hace uso de la MasterPage hacemos la llamada a esa propiedad: Para Visual Basic 2005: <%@ Page Language="VB" MasterPageFile="~/MasterPage.master" Title="Título de la página" %><script runat="server"> Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) CType(Me.Master, MasterPage).Titulo = "Mi página que usa una Master Page" End Sub </script> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> </asp:Content> Para C# 2005: <%@ Page Language="C#" MasterPageFile="~/MasterPage2.master" Title="Prueba de C#" %><script runat="server"> protected void Page_Load(object sender, EventArgs e) { ((MasterPage2)this.Master).Titulo = "Mi prueba de Master Page desde C#"; } </script> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> </asp:Content> FinEspero que les sirva ;-) Un saludo, El Tucán
|