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

时间:2016-03-10 03:17:06

标签: model-view-controller mvcsitemapprovider

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

1 个答案:

答案 0 :(得分:0)

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

我建议在使用IDynamicNodeProviderISiteMapNodeProvider阅读数据之前对数据进行清理。

选项

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