路由参数未保留 [Mvc SiteMap Provider]
Route parameters not getting preserved [Mvc SiteMap Provider]
我有一个 Team
table 和一个 Player
table,外键是 TeamId
。
我需要对播放器进行 CRUD 操作,为此我有 PlayerController
。 Index
方法以 teamId
作为参数,并显示该团队中的所有球员。 Add
方法也将 teamId
作为参数,并将一名球员添加到该球队。 Edit
方法以playerId
为参数,编辑对应的播放器。
现在,我正在使用 Mvc SiteMap Provider 在我的项目中创建菜单和面包屑导航。仅显示相关属性,我的站点地图的一部分如下所示:
<mvcSiteMapNode title="Player List" preservedRouteParameters="teamId">
<mvcSiteMapNode title="Add Player" preservedRouteParameters="teamId"></mvcSiteMapNode>
<mvcSiteMapNode title="Edit Player" preservedRouteParameters="playerId"></mvcSiteMapNode>
</mvcSiteMapNode>
问题是,当我从 Player List
导航到 Add Player
时,我可以通过单击面包屑中的 link 返回到 Player List
页面。但是当我尝试从 Edit Player
页面返回到 Player List
页面时,出现错误,因为面包屑创建的 URL 不包含 teamId
参数。
所以基本上 Player List
的 teamId
参数在我转到 Add Player
时被保留,但当我转到 Edit Player
时却没有。
为什么会这样?有办法解决这个问题吗?
这是因为preservedRouteParameters
只知道当前请求中的值。当导航到 Edit Player
link 时,请求中没有 teamId
,因此 Player List
link 不会有 teamId
的值复制.
您可以通过将 teamId
添加到 Edit Player
节点来解决此问题。
<mvcSiteMapNode title="Player List" preservedRouteParameters="teamId">
<mvcSiteMapNode title="Add Player" preservedRouteParameters="teamId"></mvcSiteMapNode>
<mvcSiteMapNode title="Edit Player" preservedRouteParameters="playerId,teamId"></mvcSiteMapNode>
</mvcSiteMapNode>
并将 teamId
添加到关联的路由、ActionLinks、RouteLinks 等,这样每次 Edit Player
导航到时它都会包含在请求中。
请注意,重要的是 teamId
在具有相同共同祖先的每个节点中引用相同的实体。
我有一个 Team
table 和一个 Player
table,外键是 TeamId
。
我需要对播放器进行 CRUD 操作,为此我有 PlayerController
。 Index
方法以 teamId
作为参数,并显示该团队中的所有球员。 Add
方法也将 teamId
作为参数,并将一名球员添加到该球队。 Edit
方法以playerId
为参数,编辑对应的播放器。
现在,我正在使用 Mvc SiteMap Provider 在我的项目中创建菜单和面包屑导航。仅显示相关属性,我的站点地图的一部分如下所示:
<mvcSiteMapNode title="Player List" preservedRouteParameters="teamId">
<mvcSiteMapNode title="Add Player" preservedRouteParameters="teamId"></mvcSiteMapNode>
<mvcSiteMapNode title="Edit Player" preservedRouteParameters="playerId"></mvcSiteMapNode>
</mvcSiteMapNode>
问题是,当我从 Player List
导航到 Add Player
时,我可以通过单击面包屑中的 link 返回到 Player List
页面。但是当我尝试从 Edit Player
页面返回到 Player List
页面时,出现错误,因为面包屑创建的 URL 不包含 teamId
参数。
所以基本上 Player List
的 teamId
参数在我转到 Add Player
时被保留,但当我转到 Edit Player
时却没有。
为什么会这样?有办法解决这个问题吗?
这是因为preservedRouteParameters
只知道当前请求中的值。当导航到 Edit Player
link 时,请求中没有 teamId
,因此 Player List
link 不会有 teamId
的值复制.
您可以通过将 teamId
添加到 Edit Player
节点来解决此问题。
<mvcSiteMapNode title="Player List" preservedRouteParameters="teamId">
<mvcSiteMapNode title="Add Player" preservedRouteParameters="teamId"></mvcSiteMapNode>
<mvcSiteMapNode title="Edit Player" preservedRouteParameters="playerId,teamId"></mvcSiteMapNode>
</mvcSiteMapNode>
并将 teamId
添加到关联的路由、ActionLinks、RouteLinks 等,这样每次 Edit Player
导航到时它都会包含在请求中。
请注意,重要的是 teamId
在具有相同共同祖先的每个节点中引用相同的实体。