我有一個動態節點提供程序,它與我的站點地圖配置一起在下面複製。當我進入我的網址/ Account/Edit/1475時,麪包屑顯示「Home> Accounts> [Incorrect Account Name]> Edit」。它顯示的帳號名稱與網址1475中的'accountId'不同。我認爲這是由於'preservedRouteParameter = accountId'導致它匹配錯誤的節點。這是正確的嗎?ASP.NET MVC站點地圖提供程序 - 動態節點下的非動態節點
我是否需要爲我的站點地圖中的帳戶編輯節點創建另一個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" }
);
這很好。謝謝! – 2014-09-26 00:25:49