【发布时间】:2013-02-06 16:49:01
【问题描述】:
我正在尝试让 MvcSiteMapProvider 与一个执行一些 CRUD 操作的简单站点一起工作。我几乎已经完成了,但在许多情况下我都会出现奇怪的行为。
首先,我使用标准层次结构创建了控制器和视图:
控制器
--> 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>
请注意,Edit 和 Delete 操作嵌套在 Details 节点中。
接下来,我实现了 TestDynamicNodeProvider 类,如下所示: 公共类 TestDynamicNodeProvider : DynamicNodeProviderBase { 实体 db = 新实体();
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 > Equipo (easy...)
详细信息视图(第 2 项):Inicio > Equipo > EQUIPO_B (ok)
编辑视图(第 2 项):Inicio > Equipo > EQUIPO_A > Editar Equipo(错误!)
删除视图(第 2 项):Inicio > Equipo > EQUIPO_A > Eliminar Equipo(错误!)
我不明白为什么在编辑和删除视图中它总是使用列表中的第一项来构建面包屑。链接也是错误的(Equipo/Details/1 应该是 Equipo/Details/2)
我附上一个捕获以获取更多示例。
我不知道我做错了什么!有什么想法吗?
【问题讨论】:
-
一个月后,没有一个答案。也许我的问题写得不好?请告诉我...
标签: asp.net-mvc-3 asp.net-mvc-4 mvcsitemapprovider