MVC 3 Provider-Provider- несколько путей, указывающих на тот же узел

StackOverflow https://stackoverflow.com/questions/7350567

  •  28-10-2019
  •  | 
  •  

Вопрос

Я недавно начал использовать мартенбу поставщик сайтов, потому что я не мог решить проблему с маршрутом с другой картой сайта, которая у меня была. Это намного лучше, чем мой предыдущий. У меня вопрос: как я могу создать разные трасс для хлебной крошки со страниц, которые идут на одну главную страницу? Рассмотрим идею ниже:

Структура карты сайта

<mvcSiteMapNode title="Home" controller="Home" action="Index" changeFrequency="Always" updatePriority="Normal">
       <mvcSiteMapNode title="Clients Search" controller="ClientBussiness" action="ClientSearch" description="Clients Search">
            <mvcSiteMapNode title="Contract Analysis" controller="Contract" action="Index"/>
        </mvcSiteMapNode>

        <mvcSiteMapNode title="Advanced Search" controller="ClientBussiness" action="AdvancedSearch" description="Clients Advanced Search">
            <mvcSiteMapNode title="Contract Analysis" controller="Contract" action="Index"/>
        </mvcSiteMapNode>

        <mvcSiteMapNode title="Another Search" controller="ClientBussiness" action="AnotherSearch" description="Clients Another Search">
            <mvcSiteMapNode title="Contract Analysis" controller="Contract" action="Index"/>
        </mvcSiteMapNode>
</mvcSiteMapNode>

На примере выше, на моей трассе Breadcrumb всегда показывается поиск клиентов узел, а не любой другой. Я не знаю, должны ли создавать разные маршруты для каждого вида поиска (я делал это на своей последней карте сайта, но, к сожалению, IIS6 это не понравилось).

Я ценю вашу помощь.

РЕДАКТИРОВАТЬ

Поиск на форумах я нашел аналогичный вопрос. Итак, рассмотрим структуру ниже:

Home >> Search >> Contracts
Home >> Another Search >> Contracts
Home >> Advanced Search >> Contracts
Home >> Web Service Search >> Extra fields >> Contracts
Это было полезно?

Решение

Ну, кажется, все, что мне нужно было сделать, это добавить несколько атрибутов динамических узлов на мои контроллеры. Вы можете прочитать, как это сделать здесь. Анкет Используя пример выше, вот как это делается:

 [MvcSiteMapNodeAttribute(Title = "Search", Key = "search", ParentKey = "ContractSearch", Route = "SearchRoute")]
        [MvcSiteMapNodeAttribute(Title = "AdvancedSearch", Key = "ContractAdvSearch", ParentKey = "AdvSearch", Route = "AdvSearchRoute")]
        [MvcSiteMapNodeAttribute(Title = "AnotherSearch", Key = "ContractAnotherSearch", ParentKey = "AnotherSearch", Route = "AnotherSearchRoute")]
        public ActionResult ContractIndex()
{
   //Things to do...         
}

На примере выше, каждый вид поиска будет должным образом определен на трассе для хлебной крошки. Имейте в виду, что вы должны определить различные маршруты для каждого вида «поиска», который вы хотите использовать. Итак, если вы хотите иметь 3 узла, указывающие на один и тот же URL -адрес, каждый узел должен иметь свой собственный маршрут, и это ключ, определяемый на MvcSiteMapNodeAttribute.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top