0

我在一个网站上有一个用户控件,里面有这个。

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()
4

3 回答 3

1

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

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

您应该像这样访问它:

menuTreeSelect.getRoot();

不是这样:

MenuTreePanel.getRoot();
于 2013-08-29T03:31:38.217 回答
0

尝试:

Public Shared Function getRoot() As MenuNode
    Return root
End Function
于 2013-08-29T03:18:01.827 回答
0

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

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

谢谢你的帮助。

于 2013-08-29T15:50:54.900 回答