ASP.Net用户控件公共功能不是成员

时间:2013-08-29 00:28:10

标签: asp.net vb.net web

我在网站上有一个用户控件。

Namespace MenuTreePanel
Public Class MenuTreePanel
    Inherits System.Web.UI.UserControl
    Public root As New MenuNode(0, 0, "root", "")




    Public WithEvents Spany1 As HtmlGenericControl = New HtmlGenericControl("UL")
    Public WithEvents Spany2 As HtmlGenericControl = New HtmlGenericControl("UL")
    Public WithEvents Spany3 As HtmlGenericControl = New HtmlGenericControl("UL")

    Public Function getRoot() As MenuNode
        Return root
    End Function
End Class
End Namespace

当我去访问getRoot函数时,我得到错误

'getRoot' is not a member of 'ASP.MenuTreePanel'.   

命名空间被错误地标记为ASP,我想知道它可能来自哪里。在对象资源管理器中,我的控件列在正确的命名空间和ASP命名空间下。

使用

在页面上引用
<%@ Register TagPrefix="MenuTreePanel" Src="~/MenuTreePanel.ascx" TagName="MenuTree" %>

<MenuTreePanel:MenuTree ID="menuTreeSelect" runat="server"></MenuTreePanel:MenuTree>

编辑2:

    <%@ Control Language="vb" CodeBehind="~/MenuTreePanel.ascx.vb"className="MenuTreePanel" %>

并尝试访问它         Dim root As New MenuNode(0,0,“root”,“”)

    root = (menuTreeSelect).getRoot()

3 个答案:

答案 0 :(得分:1)

问题很可能是您试图静态访问该属性。我的假设是你想要静态访问它,因为它是一个控件。

我的建议是你看看你是如何使用MenuTreePanel对象的。

您应该像这样访问它:

menuTreeSelect.getRoot();

喜欢这样:

MenuTreePanel.getRoot();

答案 1 :(得分:0)

尝试:

Public Shared Function getRoot() As MenuNode
    Return root
End Function

答案 2 :(得分:0)

我没有正确地将CodeFile和ASCX与网站链接。

我不得不将CodeBehind更改为CodeFile并添加继承,现在一切正常。

感谢您的帮助。