2010-02-02 20 views
7

Tengo masterpage.master.vb donde tengo propiedades, como;Acceso a las propiedades de la página maestra desde las páginas secundarias en ASP.net VB

Private _SQLerror As String 
    Public Property SQLerror() As String 
     Get 
      Return _SQLerror 
     End Get 
     Set(ByVal value As String) 
      _SQLerror = String.Empty 

     End Set 
    End Property 

Luego tengo una página aspx en la que necesito utilizar esta propiedad, como;

If **[masterpage property sqlerror]** = Nothing Then 
      InternalSQLErrLabel.Text = ("No Errors Reported") 
     End If 

¿Alguien me puede dar una idea de cómo hacerlo? Intenté buscar pero la mayoría de los artículos hablan en el contexto de controles web ...

Gracias.

Respuesta

7

Aquí van:

How to: Reference ASP.NET Master Page Content

Desde el artículo, parece que

If Master.SQLerror = Nothing Then 
    InternalSQLErrLabel.Text = ("No Errors Reported") 
End If 

debe trabajar para usted.

Simplemente asegúrese de agregar la directiva MasterType como se describe o puede obtener un error de conversión de tipo. (O podría usar una variable de su tipo de página maestra en lugar de Maestro, como sugiere daRoBBie en su respuesta.)

He creado un sitio web de prueba solo para probarlo, y funciona. Aquí está la fuente completa del sitio:

Site1.Master:

<%@ Master Language="VB" AutoEventWireup="false" CodeBehind="Site1.master.vb" Inherits="WebApplication1.Site1" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     This is the Master Page content. 
     <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> 
     </asp:ContentPlaceHolder> 
    </div> 
    </form> 
</body> 
</html> 

Site1.Master.vb:

Public Partial Class Site1 
    Inherits System.Web.UI.MasterPage 

    Private _SQLerror As String 

    Public Property SQLerror() As String 
     Get 
      Return _SQLerror 
     End Get 
     Set(ByVal value As String) 
      _SQLerror = String.Empty 
     End Set 
    End Property 
End Class 

WebForm1.aspx:

<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site1.Master" 
    CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1" %> 

<%@ MasterType VirtualPath="~/Site1.Master" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
    This is the Content Page content. 
    <asp:Label ID="InternalSQLErrLabel" runat="server" Text="Label"></asp:Label> 
</asp:Content> 

WebForm1.aspx.vb:

Public Partial Class WebForm1 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     If Master.SQLerror = Nothing Then 
      InternalSQLErrLabel.Text = ("No Errors Reported") 
     End If 
    End Sub 

End Class 

+0

¡Eso es lo que estaba intentando antes de hacer mi pregunta, pero sin suerte! ... yo obtengo; SQLError no es miembro de system.web.ui.masterpage. – Phil

+0

¿Agregó la directiva MasterType? Parece que ese podría ser tu problema. La propiedad principal no está fuertemente tipada, por lo que es de tipo System.Web.UI.MasterPage, que no tiene su propiedad. –

+0

Tengo <% @ MasterType VirtualPath = "~/my.master" "%> y en @page MasterPageFile =" ~/my.master " – Phil

3

puede emitir el masterpage al tipo correcto:

MyMasterPageType m = (MyMasterPageType)Master; 

A continuación, puede acceder a sus propiedades:

m.SqlError 

Si tiene varias páginas maestras, permita que todas sus páginas maestras se hereden de una interfaz y envíe la página maestra a esa interfaz.

1

Puede usar <% @ MasterType%> también para esto.

0

Si ha seguido los pasos en la respuesta de Andy West y tiene uno o muchos errores de compilación que dicen: Foo is not a member of 'System.Web.UI.MasterPage', asegúrese de que sean el único error de compilación en su lista.Si hay otros errores de compilación que deben corregirse, deben corregirse antes de continuar con la solución de problemas de su MasterPage.

Estos otros errores de compilación pueden impedir que el compilador analice su MasterPage y detecte las propiedades adicionales. Una vez que se resuelvan, realice una recompilación completa.

Cuestiones relacionadas