Как я могу создать неактивный динамический узел в моей карте сайта MVC?

Я использую MvcSiteMapProvider для создания хлебных крошек в своем приложении ASP.NET MVC. У меня есть некоторые динамические ресурсы, для которых я хочу создать несколько дочерних узлов. Я хочу, чтобы некоторые из этих узлов отображались в панировочных сухарях, но не были кликабельны.

Для статического ресурса вы можете указать clickable="false" в XML-документе карты сайта, и эти узлы появятся, но не будут гиперссылками. Я не могу найти эквивалентное свойство для установки DynamicNode, возвращаемого моим классом поставщика динамических узлов.

Можно ли добавить динамический, «некликабельный» узел?


person Paul Turner    schedule 20.12.2012    source источник


Ответы (2)


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";
person Paul Turner    schedule 20.12.2012

В v4 теперь есть свойство Clickable на динамическом узле, и установка атрибута в clickable теперь вызовет ошибку, поскольку свойства больше не поддерживаются словарем Attributes.

var node = new DynamicNode();

node.Clickable = false;
person NightOwl888    schedule 22.02.2014