在aspx页面后面的代码中访问主页面中的usercontrols

时间:2015-07-21 14:55:31

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

我已将没有母版页的应用程序迁移到使用母版页的应用程序。我从每个页面中删除了对用户控件的引用,并将它们放在master中,以便可以在所有页面中使用它们。在后面的代码中,我不再能够访问每个用户控件的属性。下面是旧代码以及我尝试更新它的内容,但在新代码中,尝试访问用户控件的title属性时出错。任何帮助都会很棒!

旧代码:

Me.ucNavBar.Title = "Add New Product"

新守则:

Master.FindControl("ucNavBar").Title = "Add New Product"

新代码出错:

'Title' is not a member of 'System.Web.UI.Control'.

2 个答案:

答案 0 :(得分:3)

将其投射到您的特定类型以访问标题属性:

CType(Master.FindControl("ucNavBar"), UserControl).Title = "Add New Product"

答案 1 :(得分:0)

以下是否有帮助?

包含在.master文件中:

    <%@ Register TagPrefix="uc" TagName="Navbar" Src="Navbar.ascx" %>

以及您需要的地方:

    <uc:Navbar runat="server" ID="Navbar" />

并直接在master.vb中访问它:

   Navbar.Title = "Add new product"

要在使用母版页的页面中访问它,请将以下内容添加到.master.vb:

   Public Property NavbarTitle as String
   Get
     return Navbar.Title
   Set(ByVal value As String)
     Navbar.Title = value
   End Property

.aspx:

   <%@ Reference Control="XXXXX.master" %>

.aspx.vb

    Dim XXXXMaster As XXXXMaster= CType(Me.Page.Master, XXXXMaster)
    CType(XXXXMaster.FindControl("ucNavBar"), UserControl).Title = "Add New Product"

    Dim XXXXMaster As XXXXMaster= CType(Me.Page.Master, XXXXMaster)
    XXXXMaster.NavbarTitle = "Add New Product"

仅供参考,我没有测试此代码,但希望它有所帮助...