Отображать только корневые узлы с MVCSiteMap - PullRequest
1 голос
/ 26 января 2012

Я использую Asp.net MVC SiteMap Provider для управления картой сайта моего сайта.

Структура приложения:

Это небольшое приложение, где у меня естьобласть под названием «Администратор»

Карта сайта

<mvcSiteMapNode title="LET'S GO" controller="Home" action="Index">

    <mvcSiteMapNode title="FESTAS" controller="Festas" action="Index">
        <mvcSiteMapNode title="INFANTIL" controller="Festas" action="Infantil" />
        <mvcSiteMapNode title="ADULTO" controller="Festas" action="Adulto" />
    </mvcSiteMapNode>
    <mvcSiteMapNode title="ORÇAMENTO" controller="Home" action="Index" />
    <mvcSiteMapNode title="CONTATO" controller="Home" action="Contato"/>

    <mvcSiteMapNode title="ADMINISTRAÇÃO" area="Admin" controller="Home" action="Index">
        <mvcSiteMapNode title="FESTAS" area="Admin" controller="Festas" action="Index" />
        <mvcSiteMapNode title="SUBSIDIÁRIAS" area="Admin" controller="Subsidiarias" action="Index" />
    </mvcSiteMapNode>

</mvcSiteMapNode>

Проблема

Чтобы отобразить главное меню, используйте следующую команду:

@Html.MvcSiteMap().Menu()

Это первая проблема, отображаются все узлы.

  1. Я бы хотел отобразить только корни узлов (например, "INFANTIL" и "ADULTO" не будут отображаться)
  2. Узлы области администратора не могут быть отображены.Они отображаются только в другом представлении.

Как выполнить эти задачи?

Вопрос

Как создать карту сайта только для определенного узла?
Пример: Я хочу создать карту сайта только дочерний узел "ADMINISTRAÇÃO"

Спасибо всем !!

Ответы [ 2 ]

1 голос
/ 18 мая 2012

1) Я бы хотел отобразить только корни узлов (например, «INFANTIL» и «ADULTO» не будут отображаться)

@Html.MvcSiteMap().Menu(1, 1)

2) Узлы области администратора не могут быть отображены. Они появляются только в другом представлении.

Может быть, вам стоит использовать атрибут role . Создание первой карты сайта

Как я могу создать карту сайта только для определенного узла?

Попробуйте использовать один из перегруженных методов

public static System.Web.Mvc.MvcHtmlString Menu(this MvcSiteMapProvider.Web.Html.MvcSiteMapHtmlHelper helper, System.Web.SiteMapNode startingNode, bool startingNodeInChildLevel, bool showStartingNode, int maxDepth)
0 голосов
/ 21 февраля 2012

Я знаю, что этот вопрос немного устарел, но для будущего использования: это легко сделать, наделив Действия (или Контроллер) разрешениями на доступ.

Я предполагаю, что не каждый может получить доступ к административной части (только аккредитованный).Таким образом, вы можете создать, например, административную роль и украсить с помощью FilterAttribute действия (или контроллер): например,

 [Authorize(Roles = "Administrator")]
        public ActionResult Index()
{ ....  }

Как только пользователь идентифицирует себя как администратор, будет показана запись карты сайта для действия индекса.

...