我试图让MvcSiteMapProvider使用一个执行CRUD操作的简单站点。我几乎可以做到这一点,但在很多情况下,我都会有奇怪的行为。
首先,我使用stardard等级创建了Controller和视图:
控制器
-> 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>注意,编辑和删除操作嵌套在Details节点中。
接下来,我将TestDynamicNodeProvider类实现如下:公共类TestDynamicNodeProvider : DynamicNodeProviderBase { Entities 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 (容易.)
详细信息查看(第二项):Inicio > Equipo > EQUIPO_B (确定)
编辑视图(第二项):Inicio > Equipo > EQUIPO_A > Editar Equipo (错误!)
删除视图(第2项):Inicio > Equipo > EQUIPO_A > Eliminar Equipo (错误!)
我不明白为什么在编辑和删除视图中,它总是使用列表中的第一项来构建面包屑。链接也是错误的(Equipo/Details/1,而应该是Equipo/Details/2)
我附上一个捕获的更多的例子。
我不知道我做错了什么!有什么想法吗?

发布于 2013-05-08 07:11:06
您是否尝试过在详细信息、编辑和删除节点中添加"preservedRouteParameters“?我假设您使用的是"id“这样的字段,因此它看起来如下:
preservedRouteParameters="id“
https://stackoverflow.com/questions/14734403
复制相似问题