我在网站上有一个用户控件。
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()
答案 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并添加继承,现在一切正常。
感谢您的帮助。