2012-12-20 3 views
0

MvcSiteMapProvider을 사용하여 ASP.NET MVC 응용 프로그램에서 탐색 경로를 만듭니다. 일부 자식 노드를 만들려는 동적 리소스가 있습니다. 이 노드들 중 일부는 빵 부스러기에 나타나기를 원하지만 클릭 할 수는 없습니다.내 MVC 사이트 맵에서 취소 불가능한 동적 노드를 만들려면 어떻게해야합니까?

정적 리소스의 경우 XML 사이트 맵 문서에 clickable="false"을 지정할 수 있으며 이러한 노드는 나타나지만 하이퍼 링크는 아닙니다. 내 동적 노드 공급자 클래스에서 반환 한 DynamicNode에서 설정할 동일한 속성을 찾을 수 없습니다.

동적 "unclickable"노드를 추가 할 수 있습니까?

답변

1

DynamicNode은 클래스를 상속하지 않으므로 n Clickable 속성이 없습니다. MvcSiteMapNode에 반영

Clickable의 구현이 Attributes 속성에 의해 뒷받침되고 있음을 보여줍니다

public bool Clickable 
{ 
    get 
    { 
     return ((this["clickable"] == null) || bool.Parse(this["clickable"])); 
    } 
    set 
    { 
     this["clickable"] = value.ToString(); 
    } 
} 

DynamicNode 클래스는 동적 노드가 구문 분석 할 때 MvcSiteMapNode 인스턴스에 복사됩니다 자신의 Attributes 속성을 노출합니다. 속성 따라서이 코드를 사용하여 설정할 수 있습니다 : V4에서

var node = new DynamicNode(); 

node.Attributes["clickable"] = "false"; 
1

동적 노드의 클릭 가능한 속성은 지금이, 그리고 속성이 더 이상 바탕 없기 때문에 클릭에 속성을 설정하면 이제 오류가 발생합니다 Attributes 사전

var node = new DynamicNode(); 

node.Clickable = false; 
관련 문제