1

我正在使用Asp.net MVC SiteMap Provider来管理我网站的站点地图。

应用结构:

这是一个小应用程序,我有一个名为“Admin”的区域

站点地图

<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”的站点地图唯一子节点

谢谢大家!!

4

2 回答 2

1

1)我想只显示节点根(例如“INFANTIL”和“ADULTO”将不会显示)

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

2) Admin区域的节点无法显示。它们只出现在另一个视图上。

可能是你应该使用角色属性。 创建第一个站点地图

如何仅生成特定节点的站点地图?

尝试使用其中一种重载方法

public static System.Web.Mvc.MvcHtmlString Menu(this MvcSiteMapProvider.Web.Html.MvcSiteMapHtmlHelper helper, System.Web.SiteMapNode startingNode, bool startingNodeInChildLevel, bool showStartingNode, int maxDepth)
于 2012-05-18T14:16:44.750 回答
0

我知道这个问题有点过时了,但为了将来使用:这可以通过使用访问权限装饰 Actions(或 Controller)来轻松完成。

我假设不是每个人都可以访问管理部分(只有经过认证的)。因此,您可以创建例如管理角色并使用 FilterAttribute 装饰操作(或控制器):例如

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

一旦用户将自己标识为管理员,将显示索引操作的站点地图条目。

于 2012-02-20T20:45:55.350 回答