【发布时间】:2016-10-23 22:07:45
【问题描述】:
我有一些严格导航的节点。到目前为止,我已经通过使用“导航节点”路由并在仅导航节点上明确设置 url (~/Home/*) 来处理这个问题。它工作正常。这允许我拥有一个菜单层次结构,而不必为每个仅导航菜单项添加虚拟(这将是愚蠢的),同时允许它们显示在菜单和面包屑层次结构中。
Mvc.sitemap
<mvcSiteMapNode title="Home" controller="Home" action="Index" >
<mvcSiteMapNode title="Products" url="~/Home/Products" roles="*">
<mvcSiteMapNode title="Shampoo MAX" url="~/Home/Products/ShampooMAX" >
<mvcSiteMapNode title="Policies" controller="Object" action="List" type="Policy" >
</mvcSiteMapNode>
<mvcSiteMapNode title="Quotes" controller="Object" action="List" >
</mvcSiteMapNode>
<mvcSiteMapNode title="Claims" controller="Object" action="List">
</mvcSiteMapNode>
</mvcSiteMapNode>
</mvcSiteMapNode>
<mvcSiteMapNode title="Documents" controller="Document" action="Index" />
<mvcSiteMapNode title="Forms" controller="Form" action="Index"/>
<mvcSiteMapNode title="Links" url="~/Home/Links" roles="*">
<mvcSiteMapNode url="https://interfarina.com/login#login" targetFrame="_blank" title="Quoting" roles="*"/>
<mvcSiteMapNode url="https://drive.google.com/file/d/asdfsdfsdfsdfs/view" targetFrame="_blank" title="Downloadable App" roles="*"/>
<mvcSiteMapNode url="https://gumbysafety.com/app/user/login" targetFrame="_blank" title="Sales Tools" roles="*"/>
</mvcSiteMapNode>
</mvcSiteMapNode>
RouteConfig.cs
routes.MapRoute(
name: "Navigation-Only Node",
url: "Home/{*url}",
defaults: new { controller = "Home", action = "Index" }
);
我想清理一下我的Mvc.sitemap 文件,方法是从仅导航节点中删除所有 url,并捕获一些事件或覆盖一些可以为节点生成 url 的方法。如您所见,这些节点的 url 可以从祖先和自身标题生成。
我不确定documentation 是否正在解决此功能。
【问题讨论】:
-
不清楚您所说的“仅导航节点”是什么意思。所有节点都用于导航。
-
@NightOwl888,对不起。我的意思是,一个没有控制器或动作的节点。它最终所做的只是改变你在节点路径中的位置。类比是嵌套菜单,其中一些菜单项只是为了对其他菜单或命令进行分组,然后叶节点实际执行命令。这里的概念相同。
标签: asp.net-mvc-5 dry mvcsitemapprovider