我正在调试ASP.NET MVC中的路由匹配问题。 URL的定义如下:{foo} / Somewhere / {controller} / {action} / {id}。每个段都在路径上设置了默认值。
当我尝试浏览http://hostname/bar/Somewhere时,路线匹配。如果我尝试http://hostname/Somewhere(因此,省略foo段),路线不匹配。
我已经从Phil Haack安装了routedebugger,我可以看到我的默认设置已正确设置(controller = Home,action = Index,id = UrlParameter.Optional,foo = bar),但路线仍然不匹配,我得到了404。
我尝试修改路线,使其在“静态”细分之前没有“optionnal”细分,例如:某处/ {controller} / {action} / {id} / {foo}。使用此路由,url(http:// hostname / Somewhere / bar和http://hostname/Somewhere)都按预期工作。
MVC中是否存在限制(或错误),在硬编码之前我不能使用“optionnal”分区?
感谢您的帮助, 费边
答案 0 :(得分:0)
这是合乎逻辑的。您的foo
占位符不能突然清空或省略。如果你问我的意见,我必须说省略是不好的。这些路径按大小递减顺序必须映射到应用程序的模块和功能。
基本上,当this问题也回答时,你不能在路线中间有可选的段。