我试图让 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>
请注意,编辑和删除操作嵌套在详细信息节点中。
接下来,我实现了 TestDynamicNodeProvider 类,如下所示: public class TestDynamicNodeProvider : DynamicNodeProviderBase { Entities 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 > Equipo(简单...)
详细信息视图(第二项):Inicio > Equipo > EQUIPO_B(ok)
编辑视图(第二项):Inicio > Equipo > EQUIPO_A > Editar Equipo(错误!)
删除视图(第二项):Inicio > Equipo > EQUIPO_A > Eliminar Equipo(错误!)
我不明白为什么在编辑和删除视图中它总是使用列表中的第一项来构建面包屑。链接也错误(Equipo/Details/1应该是Equipo/Details/2)
我附上一个捕获以获取更多示例。
我不知道我做错了什么!任何想法?