2013-08-29 4 views
0

이 내부에 웹 사이트에 사용자 정의 컨트롤이 있습니다. 나는 getRoot 기능에 액세스 할 갈 때ASP.Net 사용자 정의 공용 함수가 구성원이 아닙니다

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 

나는 오류를 네임 스페이스를 잘못 ASP로 표시됩니다

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

을 얻고, 그에서 올 수있는 위치 궁금 해서요. 개체 탐색기에서 내 컨트롤은 올바른 네임 스페이스와 ASP 네임 스페이스 아래에 나열됩니다. ("", 0, 0, "루트")

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

및 새로운 MenuNode으로 그것을 희미한 루트 액세스하려는 시도 :

<%@ Register TagPrefix="MenuTreePanel" Src="~/MenuTreePanel.ascx" TagName="MenuTree" %> 

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

편집 2를 사용하여 페이지에서 참조

root = (menuTreeSelect).getRoot() 
+0

페이지에 컨트롤을 표시 할 수 있습니까? – Adrian

+0

수정 된 질문입니다. – Stottymod3

+0

클래스 이름과 네임 스페이스가 모두 같습니다. 어쩌면 그것과 충돌 할 수도 있습니다. 네임 스페이스 변경 시도 – ivowiblo

답변

0

내가 웹 사이트에 올바르게 CodeFile과 ASCX 연결되지 않았습니다.

CodeBehind를 CodeFile로 변경하고 상속을 추가해야했지만 이제는 모든 것이 올바르게 작동해야합니다.

도움 주셔서 감사합니다.

0

시도 :

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

하지만 루트가 공유되지 않습니다. 맞습니까? 이것이 작동하지 않는다는 것을 의미하지는 않습니까? – htxryan

+0

방금 ​​MenuTreePanel에서 만든 공유 기능에 액세스 할 수 없었습니다. – Stottymod3

0

문제는 속성에 정적으로 액세스하려고 시도하는 것일 수 있습니다. 내 가정은 당신이 이 아니라는 것입니다.은 컨트롤이므로 정적으로 액세스하려고합니다.

내 제안은 MenuTreePanel 개체를 사용하는 방법을 살펴 보는 것입니다.

당신은 이런 식으로 접근해야한다 :이 같은

menuTreeSelect.getRoot(); 

하지을 :

MenuTreePanel.getRoot(); 
관련 문제