0

MvcSiteMapProvider用来在我的 ASP.NET MVC 应用程序中创建面包屑。我有一些动态资源,我想为其创建一些子节点。其中一些节点,我想出现在面包屑中但不可点击。

对于静态资源,您可以clickable="false"在 XML 站点地图文档中指定这些节点会出现,但不会是超链接。我找不到在DynamicNode我的动态节点提供程序类返回的值上设置的等效属性。

是否可以添加一个动态的“不可点击”节点?

4

2 回答 2

1

DynamicNode没有 nClickable属性,因为它没有从MvcSiteMapNode类继承。

反思MvcSiteMapNode表明,实现ClickableAttributes属性支持:

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";
于 2012-12-20T09:52:15.407 回答
1

在 v4 中,动态节点上现在有一个 Clickable 属性,现在将属性设置为 clickable 会导致错误,因为属性不再受 Attributes 字典支持。

var node = new DynamicNode();

node.Clickable = false;
于 2014-02-22T11:19:31.850 回答