MVC SiteMapProvider 允许具有相同 URL 的节点

MVC SiteMapProvider allow nodes with same URL

是否有设置允许多个节点具有相同的URL? 我们设置了一个小型 CMS 类型系统,网络内容管理员可以在其中向网站添加包含内容和小部件的新页面。 他们有时会犯错误,将相同的名称添加到同一父级下的多个页面,导致 2 个节点具有相同的 URL。我宁愿不显示和忽略重复项也不愿抛出异常。

URL(如果提供)用作字典的键。根据定义,字典的键必须是唯一的。即使删除了重复的 URL 检查,字典也会抛出一个更神秘的重复键异常。

我建议在使用 IDynamicNodeProviderISiteMapNodeProvider.

读取数据之前对数据进行清理

选项

  1. 在数据输入表单中添加检查以确保 URL 在允许保存之前是唯一的。
  2. 对数据库中的 URL 字段设置唯一约束,以便在数据输入时抛出异常,而不是在读取数据时抛出异常。
  3. 在您的查询中放置一个不同的过滤器,以便在将重复的 URL 记录添加到 SiteMap.
  4. 时只考虑其中一个。
  5. 在使用数据驱动的 URL 时考虑使用 controlleractionid(来自主键)。真正需要数据驱动的只有,URL会在MvcSiteMapProvider.
  6. 内正确解析