我正在尝试让MvcSiteMapProvider与一个执行一些CRUD操作的简单站点一起工作。我几乎已经完成了,但在许多情况下我都会遇到奇怪的行为。
首先,我使用stardard hierachy创建了Controller和Views:
控制器
- > EquipoController
意见
- > Equipo - >索引/详细信息/创建/编辑/删除...
接下来,定义了我的mvc.sitemap
<mvcSiteMapNode title="Inicio" controller="Home">
<mvcSiteMapNode title="Equipo" controller="Equipo">
<mvcSiteMapNode title="Crear Equipo" action="Create"></mvcSiteMapNode>
<mvcSiteMapNode title="Detalle Equipo" action="Details" dynamicNodeProvider="MvcApplication2.TestDynamicNodeProvider, MvcApplication2">
<mvcSiteMapNode title="Editar Equipo" action="Edit"></mvcSiteMapNode>
<mvcSiteMapNode title="Eliminar Equipo" action="Delete"></mvcSiteMapNode>
</mvcSiteMapNode>
</mvcSiteMapNode>
请注意,“编辑”和“删除”操作嵌套在“详细信息”节点中。
接下来,我实现了TestDynamicNodeProvider类,如下所示: 公共类TestDynamicNodeProvider:DynamicNodeProviderBase { 实体db = new Entities();
public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
{
// Build value
var returnValue = new List<DynamicNode>();
// Create a node for each album
foreach (var equipo in db.GEN_EQUIPO)
{
DynamicNode node = new DynamicNode();
node.Title = equipo.DESCRIPCION;
node.RouteValues.Add("id", equipo.ID);
yield return node;
}
}
}
假设我在GEN_EQUIPO(EQUIPO_A和EQUIPO_B)中有两个项目。这些是我在每个视图中得到的面包屑:
索引:Inicio&gt; Equipo(简单......)
详情视图(第2项):Inicio&gt; Equipo&gt; EQUIPO_B(ok)
编辑视图(第2项):Inicio&gt; Equipo&gt; EQUIPO_A &gt; Editar Equipo(错误!)
删除视图(第2项):Inicio&gt; Equipo&gt; EQUIPO_A &gt; Eliminar Equipo(错误!)
我无法理解为什么在编辑和删除视图中,它始终使用列表中的第一项来构建面包屑。此链接也是错误的( Equipo / Details / 1 ,当它应该是 Equipo / Details / 2 )
我附上了一个捕获示例。
我不知道我做错了什么!有什么想法吗?
答案 0 :(得分:0)
您是否尝试将“savedRouteParameters”添加到您的详细信息,编辑和删除节点?我假设您使用的是“id”这样的字段,所以它看起来像:
preservedRouteParameters = “ID”