2015-05-18 6 views
0

Мой проект требует первый элемент их меню есть 3 вложенные элементы:Как вы вставляете вложенный первый пункт меню с помощью MvcSiteMapProvider?

L1_Heading1 ------------------ L1_Link1--------------------L1_link2 
    | 
    |----L2 Link1 
    |----L2 Link2 
    |----L2 Link3 

Я пытаюсь использовать MVCSitemapProvider, но я не могу понять, как сделать первый пункт меню вложен ... Вот пример сайта

<?xml version="1.0" encoding="utf-8" ?> 
 
<mvcSiteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0" enableLocalization="false"> 
 
    <mvcSiteMapNode title="Home" controller="Home" action="Index" changeFrequency="Always" updatePriority="Normal"> 
 
    <mvcSiteMapNode title="Home" controller="Home" action="Index" description="Home"> 
 
     <mvcSiteMapNode title="Dashboard" controller="Home" action="Dashboard" /> 
 
     <mvcSiteMapNode title="My Profile" controller="Profile" action="MyProfile" /> 
 
     <mvcSiteMapNode title="My Jobs" controller="Profile" action="MyJobs" /> 
 
    </mvcSiteMapNode> 
 
    <mvcSiteMapNode title="Workplace" controller="Workplace" action="Index" description="users"> 
 
     <mvcSiteMapNode title="Calendar" controller="Workplace" action="Calendar" /> 
 
     <mvcSiteMapNode title="Customers" controller="Workplace" action="Customers" /> 
 
     <mvcSiteMapNode title="Equipment" controller="Workplace" action="Equipment" /> 
 
    </mvcSiteMapNode> 
 
    </mvcSiteMapNode> 
 
</mvcSiteMap>

к сожалению, это приводит к дубликата фемтосоты (Reference) ... :

Заранее благодарю за любую помощь.

ответ

0

Вам необходимо установить аргумент startingNodeInChildLevel HTML-помощника false. Есть несколько перегруженных, которые имеют этот параметр, но это самое простое:

@Html.MvcSiteMap().Menu(startFromCurrentNode: false, startingNodeInChildLevel: false, showStartingNode: true) 

На стороне записки, никогда дублирующих узлы в SiteMap. Соответствующее поведение требует, чтобы каждый узел имел уникальный набор значений маршрута или уникальный URL.