具有非特定属性值的 mvcSiteMapNode

mvcSiteMapNode with a non-specific attribute value

我有一个页面可以通过两条不同的路径到达。判断它采用哪条路线的方法是查看 url 参数。在一种情况下,url 参数将是 ?guid=...,其他将是 ?mode=...

这是一个示例站点地图文件:

<mvcSiteMapNode title="home" controller="my_controller" action="first_Action">
  <mvcSiteMapNode title="Details" controller="my_other_controller" action="index" guid="[what to put here?]" ></mvcSiteMapNode>
</mvcSiteMapNode>

<mvcSiteMapNode title="List page" controller="my_controller" action="second_Action">
  <mvcSiteMapNode title="Details" controller="my_other_controller" action="index" mode="[what to put here?]"></mvcSiteMapNode>
</mvcSiteMapNode>

互联网上的各种示例都将属性设置为实际值,但在我的例子中,url 参数 guidmode 可以是可变的。

我必须在 guidmode 中输入什么才能正确制作站点地图?还是我必须使用 preservedRouteParameters 或其他东西

您不能像您描述的那样映射动态页面 - guid and/or mode 的输入可能会根据用户请求的内容而改变。您想要的是在站点地图中包含 Details 页面的每个有效变体。但是,站点地图提供者无法知道 guid and/or mode 的有效值实际是什么,除非您告诉它 确切 有效值是什么。

你可以明确的告诉它:

<mvcSiteMapNode title="home" controller="my_controller" action="first_Action">
  <mvcSiteMapNode title="Details" controller="my_other_controller" action="index" guid="1" ></mvcSiteMapNode>
  <mvcSiteMapNode title="Details" controller="my_other_controller" action="index" guid="2" ></mvcSiteMapNode>
  <mvcSiteMapNode title="Details" controller="my_other_controller" action="index" guid="3" ></mvcSiteMapNode>
  <mvcSiteMapNode title="Details" controller="my_other_controller" action="index" guid="4" ></mvcSiteMapNode>
</mvcSiteMapNode>

如果您不相信我,这在站点地图提供程序的文档页面上的示例中也以完全相同的方式进行了描述,此处:https://github.com/maartenba/MvcSiteMapProvider/wiki/Defining-sitemap-nodes-in-XML

如果您不喜欢,那么您需要通过注册自定义路由来查看手动的自助解决方案。比如处理/sitemap.xml