主页面公共属性在内容页面中不可用

时间:2014-09-18 10:31:57

标签: asp.net vb.net master-pages

我试图从内容页面访问母版页属性,以便我可以轻松地在母版页文件上设置文字。所以我在Masterpage vb文件中以这种方式创建了母版页属性

    Public Property PropertyOnMasterPage() As String
    Get
        ' Get value of control on master page
        Return ltr_companyname.Text
    End Get
    Set(ByVal value As String)
        ' Set new value for control on master page
        ltr_companyname.Text = value
    End Set
    End Property

但我不知道如何从内容页面获取或设置此属性。(基于on this tutorial)。 多数民众赞成在C#。但是当我尝试师父的时候。 intellisense没有显示母版页属性。那么如何在contetn页面上获取母版页属性。是否需要在内容页面上引用任何内容?

修改

这些是主页面和内容页面截图..在内容页面截图中,您可以看到intellisense没有找到该属性

内容页面 enter image description here

母版页 enter image description here

3 个答案:

答案 0 :(得分:2)

您缺少的是您需要从内容页面设置MasterType,以便知道母版页是哪个类。然后它将是强类型的,不需要投射它。

将它放在你的@ Page指令下面,显然有正确的主页路径。

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

答案 1 :(得分:1)

在C#中您可以使用此.Master访问页面母版页 我想你应该有Me.Master

所以在内容页面中你最终会像这样

Me.Master.PropertyOnMasterPage

答案 2 :(得分:0)

我对主页的强类型引用没有好运,所以我通常做的是创建一个接口:

Public Interface IMyMaster
    Property PropertyOnMasterPage As String
End Interface

在您的母版页文件中,实现它:

Public Class SiteMaster
    Inherits MasterPage
    Implements IMyMaster

    Public Property PropertyOnMasterPage As String Implements IMyMaster.PropertyOnMasterPage

End Class

然后将Me.Master引用转换为接口,并访问属性,如:

CTYpe(Me.Master, IMyMaster).PropertyOnMasterPage

无论如何,界面增加了一个更松散的耦合。