我正在使用MVC SiteMap Provider在.Net MVC3中开发一个项目来创建菜单。
只有在设置了特定路由参数(meetingId)时,某些菜单节点才可见,请参见下面的示例:
<mvcSiteMapNode controller="MeetingAttendants" action="Index" title="Attendants" preservedRouteParameters="meetingId" />
meetingId参数是一个不可为空的int,没有默认值。在浏览有关会议的信息时设置该参数。
加载未设置参数的页面时,会引发错误:
无法解析站点地图节点的URL代表控制器MeetingAttendants中的操作索引的助理。确保可以解析此站点地图节点的路由,并确保其默认值允许解析当前站点地图节点的URL。
我在映射路由时尝试设置默认值,这会使问题消失。但是,无论如何在没有设置默认值的情况下解决这个问题(因为应该没有默认值)?
答案 0 :(得分:1)
我不确定为什么解析器的默认实现会以这种方式运行。看看我的问题 - 以及使用对您自己的SiteMapNodeUrlResolver进行小改动的简单修复(就像您看到的那样)。
希望得到一些反馈,并且可能会在默认设置中更改?