2012-12-20 28 views
0

我使用MvcSiteMapProvider在我的ASP.NET MVC應用程序中創建麪包屑。我有一些我想創建一些子節點的動態資源。其中一些節點,我想出現在麪包屑中,但不能點擊。如何在我的MVC站點地​​圖中創建一個不可點擊的動態節點?

對於靜態資源,您可以在XML站點地圖文檔中指定clickable="false",這些節點將顯示,但不會超鏈接。我找不到在我的動態節點提供者類返回的DynamicNode上設置的等效屬性。

是否可以添加動態的「不可點擊」節點?

回答

1

DynamicNode沒有n Clickable屬性,因爲它不從MvcSiteMapNode類繼承。

反思MvcSiteMapNode顯示,Clickable的實現是由Attributes屬性的支持:

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

DynamicNode類暴露了自己的Attributes屬性,它被複制到MvcSiteMapNode例如當動態節點解析。的屬性,因此可以使用該代碼集:

var node = new DynamicNode(); 

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

在V4中現在有動態節點上的可點擊屬性,並設置爲可點擊的一個屬性現在將導致一個錯誤,這是因爲特性不再由支持屬性字典。

var node = new DynamicNode(); 

node.Clickable = false;