2010-03-18 7 views
0

페이지의 맨 위에 페이지의 usercontrols에 대한 링크가있는 "사용자 정의 컨트롤 메뉴"를 만들려고합니다. 이렇게하면 여러 개의 usercontrol을 한 페이지에 넣을 수 있고 스크롤하지 않고도 페이지의 해당 섹션으로 이동할 수 있습니다. 이를 위해 각 usercontrol을 폴더 (usercontrols)에 넣고 각 컨트롤에 설명 속성 (<%@ Control Language="C#" Description = "Vehicles" .... %>)을 지정했습니다.어떻게 사용자 정의 컨트롤 속성에 동적으로 액세스 할 수 있습니까?

제 질문은 어떻게 동적으로이 설명에 액세스 할 수 있습니까? 이 설명을 내 메뉴의 링크로 사용하고 싶습니다. 지금까지 ASP.usercontrols 형식의 컨트롤에 대한 ControlCollection 보이는 내 페이지에서 foreach 있습니다. 만약 내가 그 속성에 액세스 할 수 있다고 가정하고 그 설명 속성을 잡아. 어떻게해야합니까? (Im은 "사용자 컨트롤 메뉴"를 얻기 위해 더 좋은 방법을 열지 만 또 다른 질문을 던집니다.) ((System.Web.UI.UserControl)mydynamiccontrol).Attributes.Keys을 사용해야합니까?

답변

1

당신이 컬렉션을 반복하고 스위치 또는 몇 가지 중 하나를 수행 할 수 있습니다 경우 문

난 당신이 인터페이스 또는 모든 사용자 컨트롤의 추상 기본 클래스가 suggst 것 : 그런 다음

public abstract class MyBaseClass : UserControl 
{ 
    public abstract string MyDescription {get;} 
} 

public MyUserControlA : MyBaseClass 
{ 
    public string MyDescription {get {return "my description";}} 
} 

public MyUserControlB : MyBaseClass 
{ 
    public string MyDescription {get {return "my other description";}} 
} 

을 당신은 당신이 그들에 루프를 할 수있는 :

foreach ... 
if (mydynamiccontrol is MyBaseClass) 
{ 
    Response.Write(((MyBaseClass)mydynamiccontrol).MyDescription); 
} 

희망이

+0

I를하는 데 도움이 좋은 지적을했다고 생각해. 아마 내가해야 할 것보다 더 힘들게 만들고있어. 사용자 컨트롤의 설명 특성에 액세스하는 방법은 여전히 ​​궁금합니다. 애트리뷰트 컬렉션을 반복하려고하면 빈 컬렉션 만 생깁니다. – rahkim

관련 문제