MvcSiteMap имеет только корневой узел

Я пытаюсь использовать MvcSiteMapProvider, но создать свой собственный макет. Я использовал nuget для установки MvcSiteMapProvider версии 3.2.3.0 в свой проект и создал этот файл для разработки. Тем не менее, когда я пытаюсь перебрать детей корневого узла, их нет.

<?xml version="1.0" encoding="utf-8" ?>
<mvcSiteMap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0"
            xsi:schemaLocation="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0 MvcSiteMapSchema.xsd"
            enableLocalization="true">
  <mvcSiteMapNode title="Home" controller="Home" action="Index">
    <mvcSiteMapNode title="Reports" controller="Reports" action="Index"/>
    <mvcSiteMapNode title="Queries" controller="Queries" action="Index"/>
    <mvcSiteMapNode title="Tools" controller="Tools" action="Index">
      <mvcSiteMapNode title="Markets" controller="Markets" action="Index">
        <mvcSiteMapNode title="Boundary Files" controller="Markets" action="BoundaryFiles" />
        <mvcSiteMapNode title="Mass Update" controller="Markets" action="MassUpdate" />
        <mvcSiteMapNode title="SHOULD NOT BE HERE" controller="Home" action="Headings" />
      </mvcSiteMapNode>
      <mvcSiteMapNode title="Categories" controller="Categories" action="Index"/>
      <mvcSiteMapNode title="Blasts" controller="Blasts" action="Index">
        <mvcSiteMapNode title="Get Blast" controller="Blasts" action="Get" />
      </mvcSiteMapNode>
      <mvcSiteMapNode title="Alerts" controller="Alerts" action="Index"/>
      <mvcSiteMapNode title="Applications" controller="Applications" action="Index"/>
    </mvcSiteMapNode>
    <mvcSiteMapNode title="Subscribers" controller="Subscribers" action="Index" />
  </mvcSiteMapNode>
</mvcSiteMap>

Однако у корневого узла нет дочерних элементов:

Я не могу понять, что не так. Я заменил корень на выполнение самого действия и дал ему похожего потомка, но это не сработало:

<mvcSiteMapNode title="ASDFG" controller="Test" action="TestSiteMap">
  <mvcSiteMapNode title="ASDFGHJKL" controller="Test" action="TestSiteMap"/>

1 ответ

Решение

Трудно сказать, что здесь происходило. Если бы мне пришлось угадывать, я бы сказал, что это могло быть связано с тем фактом, что дочерние узлы добавлялись непосредственно к узлу в v3, и в этом случае карта сайта не могла их отслеживать. Эта опция была удалена в MvcSiteMapProvider v4, чтобы гарантировать, что все узлы добавляются непосредственно в карту сайта и отслеживаются ее внутренними коллекциями.

Я хотел бы предложить обновление, чтобы увидеть, воспроизводимо ли это поведение в v4.

Другие вопросы по тегам