mvcSiteMapNode具有非特定属性值

时间:2018-04-12 01:03:59

标签: c# asp.net-mvc sitemap

我有一个页面可以通过两个不同的路径到达。通过查看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>

互联网上的各种示例都将属性设置为实际值,但在我的情况下,网址参数guidmode可以是变量。

我需要在guidmode放置什么才能正确制作网站地图?或者我必须使用preservedRouteParameters或其他东西

1 个答案:

答案 0 :(得分:0)

您无法映射您描述的动态网页 - guid和/或mode的输入可能会根据用户请求的内容而更改。您想要的是,在站点地图中包含Details页面的每个有效变体。但是,站点地图提供程序无法知道guid和/或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等。