我正在使用MvcSiteMapProvider
在我的ASP.NET MVC应用程序中创建面包屑。我有一些动态资源,我想为这些孩子创建一些子节点。其中一些节点,我想出现在面包屑中,但不能单击。
对于静态资源,您可以在XML SiteMap文档中指定clickable="false"
,并且这些节点将出现,但不会是超链接。我找不到在我的动态节点提供商类返回的DynamicNode
上设置的等效属性。
是否可以添加动态性" untlackable"节点?
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";
在v4中现在有一个动态节点上的单击属性,并且将属性设置为单击现在将导致错误,因为属性不再由属性字典来支持。
var node = new DynamicNode();
node.Clickable = false;