- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个站点地图:
<mvcSiteMapNode title="Projects" controller="Projects" action="Index" key="Home" visibility="!*">
<mvcSiteMapNode title="Projects" controller="Projects" action="Index">
<mvcSiteMapNode title="Project" controller="Projects" action="Details" preservedRouteParameters="id">
<mvcSiteMapNode title="Session" controller="Sessions" action="Details" preservedRouteParameters="id">
<mvcSiteMapNode title="Edit Session" controller="Sessions" action="Edit" preservedRouteParameters="id"/>
</mvcSiteMapNode>
</mvcSiteMapNode>
</mvcSiteMapNode>
<mvcSiteMapNode title="My Account" controller="Account" action="ChangePassword" />
<mvcSiteMapNode title="Admin" controller="Admin" action="Index" >
<mvcSiteMapNode title="Create User" controller="Admin" action="AddUser" />
<mvcSiteMapNode title="Manage Users" controller="Admin" action="Users" />
</mvcSiteMapNode>
当我转到 session 详细信息页面时,面包屑显示:
Projects > Project > Session
但是转到“项目详细信息”页面的项目链接使用与 session 相同的 ID,而不是它来自的项目。
我尝试将 inheritedRouteParameters="id"
添加到 Session Details 页面,但没有任何改变。
编辑:我添加了不同的 preservedRouteParameters,但现在“项目”链接回/Projects/Details 而没有附加 id。
最佳答案
如果键名匹配,preservedRouteParameters 总是从当前请求复制值,它不假设“id”是什么。因此,如果在同时显示的2个节点的preservedRouteParameters中使用“id”,则需要确保它们具有相同的含义。
解决此问题的一种方法是为每种情况使用不同的键名称(例如,“projectId”和“sessionId”)。然后您可以将两者都保留在子节点上,以便它“记住”它属于哪个父节点。
<mvcSiteMapNode title="Project" controller="Projects" action="Details" preservedRouteParameters="projectId">
<mvcSiteMapNode title="Session" controller="Sessions" action="Details" preservedRouteParameters="projectId,sessionId">
您可能需要修改您的路由以生成满足您的要求的 URL,但要使其正常工作,父 ID 必须是子节点路由(通常是 URL)的一部分。这是一个匹配上述节点配置的示例。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "SessionRoute",
url: "Project/{projectId}/{sessionId}",
defaults: new { controller = "Sessions", action = "Details" });
routes.MapRoute(
name: "ProjectRoute",
url: "Project/{projectId}",
defaults: new { controller = "Projects", action = "Details" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
查看 MvcSiteMapProvider-Forcing-A-Match-2-Levels 项目 in this demo看看究竟如何做到这一点。请注意,添加路由是可选的 - 如果您不介意 URL 中的查询字符串参数,您始终可以使用默认路由。
如果这不适合您,那么您可以将在一个节点参数上使用 preservedRouteParmeters 与显式设置另一个参数相结合。
<mvcSiteMapNode title="Project" controller="Projects" action="Details" preservedRouteParameters="projectId">
<mvcSiteMapNode title="Session" controller="Sessions" action="Details" id="1" preservedRouteParameters="projectId">
<mvcSiteMapNode title="Session" controller="Sessions" action="Details" id="2" preservedRouteParameters="projectId">
<mvcSiteMapNode title="Session" controller="Sessions" action="Details" id="3" preservedRouteParameters="projectId">
或者您可以为您拥有的每个“id”组合创建一个节点。
<mvcSiteMapNode title="Project" controller="Projects" action="Details" id="1">
<mvcSiteMapNode title="Session" controller="Sessions" action="Details" id="1">
<mvcSiteMapNode title="Session" controller="Sessions" action="Details" id="2">
<mvcSiteMapNode title="Session" controller="Sessions" action="Details" id="3">
</mvcSiteMapNode>
<mvcSiteMapNode title="Project" controller="Projects" action="Details" id="2">
<mvcSiteMapNode title="Session" controller="Sessions" action="Details" id="4">
<mvcSiteMapNode title="Session" controller="Sessions" action="Details" id="5">
<mvcSiteMapNode title="Session" controller="Sessions" action="Details" id="6">
</mvcSiteMapNode>
对于最后两个选项,通常最好使用 DynamicNodeProvider填充动态数据而不是用 XML 标记它们。
这些方法可以创建更简洁的 URL,但也会占用更多的 RAM。通常对于管理页面,最好使用稍微草率的 URL (preservedRouteParmaters),并为需要搜索引擎索引的页面使用动态节点(和 RAM)来保存。
inheritedRouteParameters仅用于从XML配置中的父节点继承值,并且在请求级别没有作用。
顺便说一句 - 您必须确保每个节点上的路由值组合都是唯一的。在您的示例中,前 2 个节点具有完全相同的路由值,这意味着第二个节点永远不会匹配,因为第一个匹配总是获胜。
关于asp.net-mvc - MVCSiteMapProvider 面包屑不正确的父节点 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21940001/
如何使用 Meteor 实现响应式(Reactive)面包屑和铁路由器? 现在我正在寻找由 react session 变量触发的当前路径,然后在 DOM 中添加与该路由对应的每个链接与 jQuery
我想知道grails中面包屑的用法和实现。 我有一些gsp(view)页面,主页是默认页面,我有6个类别,在那6个子页面中,我需要在我的页面中显示导航路径,例如 家庭/杂货/杂货店... 家庭/财务/
我想创建一个包含一个动态项目的面包屑导航。像这样的事情: Home > Category A > Subcategory 1 > XYZ 其中“类别 A”和“子类别 1”是静态的,“XYZ”是动态的。
我想创建一个包含一个动态项目的面包屑导航。像这样的事情: Home > Category A > Subcategory 1 > XYZ 其中“类别 A”和“子类别 1”是静态的,“XYZ”是动态的。
我正在尝试在我的 React 项目中实现面包屑布局。我没有使用 router4 来呈现 URL。此时面包屑出现的样子。 Home |Test Update |Testssss |Test11111 我
我需要将树状结构更改为一些重定向(面包屑方式)。我认为问题在于我只构建了重定向的第一部分,而没有以某种方式正确回填。我一直正确地完成重定向的第一部分,但是一旦我必须重置网址,就会失败: 不想要的结果
当您使用 ul 元素来格式化面包屑(旨在获得更好的 Google 搜索结果)时,您如何定义 RDFa 标记?我问的原因是 li 元素是彼此的 sibling ,而不是 child 。我正在做类似的事情
我从 Themeisle 买了一个支持 WooCommerce 的 WordPress 模板 Zerif Pro。模板 WooCommerce 页面不显示允许用户从一个页面导航到另一个页面的面包屑。下
我想从 magento 页面中删除面包屑,尤其是产品详细信息和产品列表页面。 这可以在不更改任何代码的情况下完成吗?仅在管理面板内? 最佳答案 最好的方法是去: 系统 --> Web --> 默认页面
目前我在 vue.js 2.0 中的 BreadCrumbs 看起来像这样: Forum
我正在尝试使用 clip-path 制作面包屑路径。 #clip span { padding: 3px 20px; background-color: #666; color: whit
由于我无法在任何地方找到合适的 RDFa 示例,我想我应该在这里问一个问题。在 Google's page有使用微数据或 RDFa 标记的面包屑示例。当您单击“示例 2”旁边的“RDFa”下的“查看标
早上好,我创建了我们网站组合的前端,我需要一点帮助(头脑不合适=)) 问题是:我需要开发带有面包屑和图像的标题 我知道图像上的父类必须有 position: relative 和 childrens
我正在使用 Spring MVC + 磁贴。 现在我想构建面包屑。所以,我正在使用这个: https://github.com/pawanspace/BreadCrumb-Spring-MVC 它运行
我坚持启动 CSS 来构建面包屑,如下图链接所示。感谢您的帮助 :) 图片- http://s1015.photobucket.com/user/dbf1655/media/bred.png.html
我正在使用 ControlsFX 的 BreadcrumbBar,效果很好。我唯一的问题是将其样式设置为如下图所示。使用风景 View 时,我看到该组件只有三个类 .bread-crumb-bar、.
我想为一个页面做一种面包屑,文件夹嵌套在它的页面上。在 Sitecore 中看起来像这样: home/ main/ sub/ Folder1/ Pag
我有一个问题。我还没有找到谷歌应该如何查看产品页面面包屑的信息。尝试了一些修复,但这些都没有正常工作。例如,如果我转到产品 www.domain.com/shoes-255并在此工具中使用它 http
在 WordPress 中,我目前使用的是 Yoast's SEO Plugin显示breadcrumbs对于我的页面和帖子,在访问特定页面时工作正常。 这是我用来在我的 WordPress 模板中显
我想在用户在 magento 前端导航我自己的模块时显示面包屑,该网站已经有适当的面包屑代码,可以按照标准 magento 面包屑在其他地方使用。 我需要在我的模块中做什么来指定当前面包屑路径? 我更
我是一名优秀的程序员,十分优秀!