<mvcSiteMapNode title="Partner" controller="Partner" key="Partner" action="ShowPartners" >
<mvcSiteMapNode title="ISP" controller="ISP" key="ISP" action="ShowPartnersIsps" preservedRouteParameters="Id" >
<mvcSiteMapNode title="Operator" controller="Operator" key="Operator" action="ShowIspsOperators" preservedRouteParameters="Id" >
<mvcSiteMapNode title="Subscriber" controller="Subscriber" key="Subscriber" action="ShowOperatorsSubscribers" preservedRouteParameters="Id" >
<mvcSiteMapNode title="Router" controller="Router" key="Router" action="ShowSubscribersRouters" preservedRouteParameters="Id" />
</mvcSiteMapNode>
</mvcSiteMapNode>
</mvcSiteMapNode>
</mvcSiteMapNode>
routes.MapRoute(
"GetPartnerRoute",
"Partner/ShowPartners/{search}",
new { controller = "Partner", action = "ShowPartners", Search = UrlParameter.Optional }
);
routes.MapRoute(
"GetISPRoute",
"ISP/ShowPartnersIsps/{Id}/{Search}",
new { controller = "ISP", action = "ShowPartnersIsps", Id = UrlParameter.Optional, Search = UrlParameter.Optional }
);
routes.MapRoute(
"GetOperatorRoute",
"Operator/ShowIspsOperators/{Id}/{Search}",
new { controller = "Operator", action = "ShowIspsOperators", Id = UrlParameter.Optional, Search = UrlParameter.Optional }
);
routes.MapRoute(
"GetSubscriberRoute",
"Subscriber/ShowOperatorsSubscribers/{Id}/{Search}",
new { controller = "Subscriber", action = "ShowOperatorsSubscribers", Id = UrlParameter.Optional, Search = UrlParameter.Optional }
);
routes.MapRoute(
"GetRouterRoute",
"Router/ShowSubscribersRouters/{Id}/{Search}",
new { controller = "Router", action = "ShowSubscribersRouters", Id = UrlParameter.Optional, Search = UrlParameter.Optional }
);
所有节点的id参数都不相同。
在上述情况中。
每个节点都有不同的“Id”值。每个节点都不相似。通过重命名“Id”,我可以达到我的预期。但我不能改变“Id”的名称。 所以当我去具有参数“Id”的子节点时,它设置与其父节点类似的值。
主页 &GT;
<a href="/Partner/ShowPartners" title="Partner">Partner</a>
>
<a href="/ISP/ShowPartnersIsps/268e4984-0923-4db7-8dd3-78564663e4d1" title="ISP">ISP</a>
>
<a href="/Operator/ShowIspsOperators/268e4984-0923-4db7-8dd3-78564663e4d1" title="Operator">Operator</a>
>
<a href="/Subscriber/ShowOperatorsSubscribers/268e4984-0923-4db7-8dd3-78564663e4d1" title="Subscriber">Subscriber</a>
>
“268e4984-0923-4db7-8dd3-78564663e4d1”对于每个节点都是类似的。哪个应该是不同的。
我怎样才能做到这一点。请帮忙
答案 0 :(得分:0)
使用preservedRouteParameters
时,值为&#34;保留&#34;来自当前请求。根据定义,这意味着路由值只能用于单一目的(尽管该目的可以跨越多个节点)。
有两种方法可以解决这个问题:
{ispId}
,{operatorId}
等。)preservedRouteParameters
,而是使用MvcSitemapProvider which expects a unique node per
id`的默认行为。您可以使用dynamic node provider建立父子关系。第一个选项更具可扩展性。第二个选项为您提供更多控制(但只能扩展到大约10,000个节点)。
请注意,要使preservedRouteParameters
正常工作,您需要将所有祖先的路由值放入当前请求中。因此,例如,必须为ispId
节点提供Operator
。即使您的操作方法可能不需要它,父节点ISP
仍然可以正确地构建URL。
在此处查看这两个选项的演示:https://github.com/NightOwl888/MvcSiteMapProvider-Remember-User-Position