【发布时间】:2014-11-19 12:49:13
【问题描述】:
我有一个动态节点提供程序,它与我的站点地图配置一起复制到下面。当我转到我的网址 /Account/Edit/1475 时,面包屑显示“主页 > 帐户 > [不正确的帐户名称] > 编辑”。它显示的帐户名称与 url 中的“accountId”不同,1475。我认为这是由于“preservedRouteParameter=accountId”导致它匹配错误的节点。是这样吗?
我是否需要在我的站点地图中为帐户编辑节点创建另一个 DynamicNodeProvider?我开始走这条路,但我需要为大多数节点创建一个单独的动态节点提供程序,所以我认为我一定做错了什么。我在配置中缺少什么吗?
public class AccountDynamicNodeProvider : DynamicNodeProviderBase
{
public override IEnumerable<DynamicNode> GetDynamicNodeCollection(ISiteMapNode node)
{
using (var entities = new Entities())
{
foreach (var account in entities.TAccounts)
{
var dynamicNode = new DynamicNode("Account_" + account.AccountId, account.AccountName);
dynamicNode.RouteValues.Add("accountId", account.AccountId);
yield return dynamicNode;
}
}
}
}
Mvc.sitemap:
<mvcSiteMapNode title="Home" controller="Home" action="Index">
<mvcSiteMapNode title="Accounts" controller="Account" action="Index">
<mvcSiteMapNode title="Detail" controller="Account" action="Details" dynamicNodeProvider="my.test.namespace.AccountDynamicNodeProvider, my.assembly">
<mvcSiteMapNode title="Edit" controller="Account" action="Edit" preservedRouteParameters="accountId" />
</mvcSiteMapNode>
</mvcSiteMapNode>
</mvcSiteMapNode>
</mvcSiteMap>
这是正在使用的路线:
routes.MapRoute(
name: "Account",
url: "Account/{action}/{accountId}",
defaults: new { controller = "Account", action = "Details" }
);
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-4 mvcsitemapprovider