Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC站点地图提供程序-动态节点下的非动态节点_Asp.net Mvc_Asp.net Mvc 4_Mvcsitemapprovider - Fatal编程技术网

Asp.net mvc ASP.NET MVC站点地图提供程序-动态节点下的非动态节点

Asp.net mvc ASP.NET MVC站点地图提供程序-动态节点下的非动态节点,asp.net-mvc,asp.net-mvc-4,mvcsitemapprovider,Asp.net Mvc,Asp.net Mvc 4,Mvcsitemapprovider,我有一个动态节点提供程序,它与我的站点地图配置一起复制到下面。当我转到我的url/Account/Edit/1475时,面包屑显示“主页>帐户>不正确的帐户名]>编辑”。它显示的帐户名与url 1475中的“accountId”不同。我假设这是由于'preservedouteParameter=accountId'导致它匹配错误的节点。是这样吗 我是否需要为网站地图中的帐户编辑节点创建另一个DynamicNodeProvider?我开始走这条路,但我需要为大多数节点创建一个单独的动态节点提供程序

我有一个动态节点提供程序,它与我的站点地图配置一起复制到下面。当我转到我的url/Account/Edit/1475时,面包屑显示“主页>帐户>不正确的帐户名]>编辑”。它显示的帐户名与url 1475中的“accountId”不同。我假设这是由于'preservedouteParameter=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;
            }
        }
    }
}
使用参数时,使用动态更改标题

[SiteMapTitle("MyTitle", Target = AttributeTarget.ParentNode)]
public ViewResult Edit(int accountId) { 
   var account = _repository.Find(accountId);

   // MyTitle is a string property of 
   // the account model object.
   return View(account); 
}

通常,在配置CRUD操作时,最好始终使用参数。但是走这条路需要注意,您需要手动修复标题和节点可见性

CRUD操作(除了添加新的)通常不会出现在菜单或站点地图中,相反,页面上通常会创建一个列表或表格,以便为每条记录动态生成命令。因此,您通常需要担心的唯一一件事就是SiteMapPath,为此,您可以使用参数

请看一看中的强制比赛演示

routes.MapRoute(
  name: "Account",
  url: "Account/{action}/{accountId}",
  defaults: new { controller = "Account", action = "Details" }
);
[SiteMapTitle("MyTitle", Target = AttributeTarget.ParentNode)]
public ViewResult Edit(int accountId) { 
   var account = _repository.Find(accountId);

   // MyTitle is a string property of 
   // the account model object.
   return View(account); 
}
[SiteMapTitle("MyTitle", Target = AttributeTarget.ParentNode)]
public ViewResult Edit(int accountId) { 
   ViewData["MyTitle"] = "This will be the title";

   var account = _repository.Find(accountId);
   return View(account); 
}