ASP.MVC默认路由值匹配问题

时间:2011-05-13 09:41:17

标签: asp.net-mvc routes

我正在调试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”分区?

感谢您的帮助, 费边

1 个答案:

答案 0 :(得分:0)

这是合乎逻辑的。您的foo占位符不能突然清空或省略。如果你问我的意见,我必须说省略是不好的。这些路径按大小递减顺序必须映射到应用程序的模块和功能。

基本上,当this问题也回答时,你不能在路线中间有可选的段。