从v3升级MvcSiteMapProvider v4。
我有一条像
这样的路线routes.MapRoute(
"SEPageNoAction",
"{controller}/{name}/{id}",
new { controller = "Home", action = "Index", name = UrlParameter.Optional, id = UrlParameter.Optional }, // Parameter defaults
new { name = @"\D+", id = @"\d+" } // Types
);
我正在使用DynamicNode
在代码中构建节点我没有设置Action,或者更确切地说,设置Action = null
然后我会添加“姓名”& “Id”为RouteValues。
当我跑步时,我会得到:
键'KEY'和标题'TITLE'的节点都有一个空的'action'和空的'url',这是不允许的
这在v3中有效。
改变了什么?
答案 0 :(得分:1)
在这种情况下,唯一改变的是向SiteMap添加验证,以确保节点属于其中一个有效的节点原型:
添加验证是因为很多人设置了冲突的属性,然后无法弄清楚如何获得有效的配置。因此,现在他们可以看到详细的错误消息,告诉他们错误,以便他们可以解决问题,而不必提出问题。
事后看来,对controller
属性而不是action
进行检查可能会更好,但当时我认为会出现问题,因为控制器是可选的XML配置(它将从其父节点继承控制器)。
因此,简而言之,您将收到此错误,因为您的action属性为null或空字符串。为了使其与您的路线相匹配,您需要明确将行动设置为"索引"。
也就是说,如果您对此解决方案不满意,可以打开new issue on GitHub或发送带有建议修复的拉取请求。