我正在使用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()
这是第一个问题,显示所有节点。
我如何完成这些任务?
如何仅为特定节点生成站点地图? 示例:我想生成“ADMINISTRAÇÃO”的仅限站点地图的子节点
感谢所有人!!
答案 0 :(得分:1)
1)我想只显示节点根(&#34; INFANTIL&#34;和&#34; ADULTO&#34;例如不会显示)
@Html.MvcSiteMap().Menu(1, 1)
2)无法显示管理区域的节点。它们只出现在另一个视图中。
可能您应该使用角色属性。 Creating a first sitemap
如何仅为特定节点生成站点地图?
尝试使用其中一个重载方法
public static System.Web.Mvc.MvcHtmlString Menu(this MvcSiteMapProvider.Web.Html.MvcSiteMapHtmlHelper helper, System.Web.SiteMapNode startingNode, bool startingNodeInChildLevel, bool showStartingNode, int maxDepth)
答案 1 :(得分:0)
我知道这个问题有点过时了,但是为了将来使用: 这可以通过使用访问权限修饰Actions(或Controller)来轻松完成。
我认为不是每个人都可以访问管理部分(只有认可的)。因此,您可以创建例如管理角色并使用FilterAttribute修饰Actions(或Controller):例如
[Authorize(Roles = "Administrator")]
public ActionResult Index()
{ .... }
一旦用户将自己标识为管理员,将显示“索引操作”的站点地图条目。