我可以为多个操作配置一个 MvcSiteMapProvider 节点吗?
Can I configure one MvcSiteMapProvider node for multiple actions?
我使用 MvcSiteMapProvider 只是为了在我这边显示 BreadCrumb。我在带有 CRUD 屏幕的应用程序中有多个母版(特别是 27 个)。每个主控器都有一个控制器,具有索引、创建、编辑、详细信息和删除操作。
我不想要每个动作的详细面包屑,只有控制器对我来说就足够了。
例如
1.组织设置:
- 部门组
* 部门
- 项目组
* 项目
- 等组
现在,当我配置 MvcSiteMapProvider xml 站点地图时,我需要这样的东西
<mvcSiteMapNode title="Department Group" controller="DeptGrp" action="*">
<mvcSiteMapNode title="Department" controller="department" action="*" />
</mvcSiteMapNode>
<mvcSiteMapNode title="Project Group" controller="PrjGrp" action="*">
<mvcSiteMapNode title="Project" controller="project" action="*" />
</mvcSiteMapNode>
但是,MvcSiteMapProvider 允许操作名称为“*”。它需要具体。我如何仅基于控制器配置地图,当操作在节点选择中发挥重要作用时,在站点地图助手中显示面包屑?
我用它来显示面包屑
@Html.MvcSiteMap().SiteMapPath()
不,单个节点不能匹配多个动作。
我们的想法是您需要在 MvcSiteMapProvider
配置中创建用于导航的层次结构,因为 MVC 不会自动提供层次结构。请注意,您可以使用 visibility providers 隐藏任何您不想在 SiteMapPath
.
中显示的节点
如果您有特定的约定,您可以使用 dynamic node provider 或实施 ISiteMapNodeProvider
并使用 Reflection
来发现您的操作,因此添加了一个节点每一个自动。
另一种选择是在带有参数的每个控制器上使用单个操作。在这种情况下,您可以在该参数的每个值上使用 preservedRouteParameters
到 force a match,然后整个控制器只需要一个节点。
但无论如何,每个动作都需要一个节点。
我使用 MvcSiteMapProvider 只是为了在我这边显示 BreadCrumb。我在带有 CRUD 屏幕的应用程序中有多个母版(特别是 27 个)。每个主控器都有一个控制器,具有索引、创建、编辑、详细信息和删除操作。
我不想要每个动作的详细面包屑,只有控制器对我来说就足够了。
例如
1.组织设置:
- 部门组
* 部门
- 项目组
* 项目
- 等组
现在,当我配置 MvcSiteMapProvider xml 站点地图时,我需要这样的东西
<mvcSiteMapNode title="Department Group" controller="DeptGrp" action="*">
<mvcSiteMapNode title="Department" controller="department" action="*" />
</mvcSiteMapNode>
<mvcSiteMapNode title="Project Group" controller="PrjGrp" action="*">
<mvcSiteMapNode title="Project" controller="project" action="*" />
</mvcSiteMapNode>
但是,MvcSiteMapProvider 允许操作名称为“*”。它需要具体。我如何仅基于控制器配置地图,当操作在节点选择中发挥重要作用时,在站点地图助手中显示面包屑?
我用它来显示面包屑
@Html.MvcSiteMap().SiteMapPath()
不,单个节点不能匹配多个动作。
我们的想法是您需要在 MvcSiteMapProvider
配置中创建用于导航的层次结构,因为 MVC 不会自动提供层次结构。请注意,您可以使用 visibility providers 隐藏任何您不想在 SiteMapPath
.
如果您有特定的约定,您可以使用 dynamic node provider 或实施 ISiteMapNodeProvider
并使用 Reflection
来发现您的操作,因此添加了一个节点每一个自动。
另一种选择是在带有参数的每个控制器上使用单个操作。在这种情况下,您可以在该参数的每个值上使用 preservedRouteParameters
到 force a match,然后整个控制器只需要一个节点。
但无论如何,每个动作都需要一个节点。