2013-02-06 46 views
1

我试图让MvcSiteMapProvider与一个执行一些CRUD操作的简单站点一起工作。我差不多完成了,但在很多情况下我都会遇到奇怪的行为。在MVC站点中使用MVC SiteMapProvider和DynamicNodeProvider进行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类,如下所示: 公共类TestDynamicNodeProvider:DynamicNodeProviderBase { 实体分贝=新实体();

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 ...)
详细信息视图(第二项):Inicio> Equipo> EQUIPO_B(ok)
编辑视图(第二项):Inicio > EQUIPO>EQUIPO_A> Editar EQUIPO(错了!)
删除视图(第2项):(!错)INICIO> EQUIPO>EQUIPO_A> Eliminar EQUIPO

我想不通为什么在编辑和删除视图它始终使用列表中的第一项来构建面包屑。同样的链接是错误的(EQUIPO /详细信息/ 1当它应该是EQUIPO /详细信息/ 2

我附上捕获更多的例子。

我不知道我做错了什么!任何想法?

Look at direction bar... and then to the link generated. Also, see that TALADRO is not TRONZADORA!

+0

一个月一个答案后不能及的。也许我的问题写得不好?请让我知道...... – Farlop

回答

0

您是否尝试过加入 “preservedRouteParameters” 到您的详细资料,编辑和删除节点?我会假设你正在使用领域,如“ID”,所以它看起来像:

preservedRouteParameters =“ID”

+0

增加'preserveRouteParameters =“id”'为详细信息节点,现在链接使用正确的URL(localhost:62974/Equipo/Details/2)构建,但文本仍然失败(显示TALADRO而不是TRONZADORA) – Farlop