【问题标题】:Using MVC SiteMapProvider and DynamicNodeProvider in MVC site for CRUD operations在 MVC 站点中使用 MVC SiteMapProvider 和 DynamicNodeProvider 进行 CRUD 操作
【发布时间】: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


【解决方案1】:

您是否尝试将“preservedRouteParameters”添加到您的详细信息、编辑和删除节点?我会假设您正在使用诸如“id”之类的字段,所以它看起来像:

preservedRouteParameters="id"

【讨论】:

  • 已将preserveRouteParameters="id" 添加到详细信息节点,现在使用正确的 url (localhost:62974/Equipo/Details/2) 构建链接,但文本仍然失败(显示 TALADRO 而不是 TRONZADORA)跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-09
  • 2016-12-16
  • 2018-12-09
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多