Доступ masterpage свойства от дочерних страниц в ASP.net VB

У меня есть masterpage.master.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

Затем у меня есть aspx страница, на которой я должен использовать это свойство в, такой как;

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

Кто-либо может дать мне общее представление, как пойти об этом? Я попытался искать, но большая часть разговора о статьях в контексте веб-элементов управления...

Спасибо.

8
задан Andy West 2 February 2010 в 08:41
поделиться

3 ответа

Вот:

Как это сделать: Ссылка на содержание главной страницы ASP.NET

Из статьи, похоже, что

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

должно работать на вас.

Просто не забудьте добавить директиву MasterType, как описано, или вы можете получить ошибку приведения типа. (Или вы можете использовать переменную типа вашей главной страницы вместо Master, как предлагает daRoBBie в своем ответе)

Я создал тестовый Web-сайт, чтобы проверить это, и он работает. Вот полный источник сайта:

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

8
ответ дан 5 December 2019 в 14:03
поделиться

Вот вам:

How to: Reference ASP.NET Master Page Content

Из статьи, похоже, что

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

должен работать для вас.

Просто добавьте директиву MasterType, как описано выше, или вы можете получить ошибку преобразования типа. (Или вы могли бы использовать переменную вашего типа мастер-страницы вместо Master, как предлагает daRoBBie в своем ответе.)

Я создал тестовый веб-сайт только для того, чтобы проверить это, и это работает. Вот полный источник сайта :

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

-121--643148-

используйте оператор кавычек Oracle:

select q'#someone's quote#' from dual;

символ «#» может быть заменен любым символом

-121--4907830-

Вы можете привести шедевр к правильному типу:

MyMasterPageType m = (MyMasterPageType)Master;

Тогда вы можете получить доступ к своим свойствам:

m.SqlError

Если у вас есть несколько страниц-шаблонов, пусть все ваши шедевры наследуются от интерфейса и приводят шедевр к этому интерфейсу.

3
ответ дан 5 December 2019 в 14:03
поделиться

Для этого также можно использовать <% @ MasterType%>.

1
ответ дан 5 December 2019 в 14:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: