【问题标题】:ASP.MVC default route value matching issueASP.MVC 默认路由值匹配问题
【发布时间】:2011-08-24 19:18:55
【问题描述】:

我正在调试 ASP.NET MVC 中的路由匹配问题。 URL 的定义如下:{foo}/Somewhere/{controller}/{action}/{id}。每个段都在路线上设置了一个默认值。

当我尝试浏览 http://hostname/bar/Somewhere 时,路由匹配。如果我尝试http://hostname/Somewhere(因此省略 foo 段),路由不匹配。

我从 Phil Haack 安装了 routedebugger,我可以看到我的默认设置正确(控制器 = Home,action = Index,id = UrlParameter.Optional,foo = bar),但路由仍然不匹配并且我得到一个 404。

我尝试将路由修改为在“静态”段之前没有“可选”段,如下所示:Somewhere/{controller}/{action}/{id}/{foo}。使用此路由,两个 url(http://hostname/Somewhere/bar 和 http://hostname/Somewhere)都按预期工作。

MVC 中是否存在限制(或错误),我不能在硬编码之前使用“可选”段?

感谢您的帮助, 费边

【问题讨论】:

    标签: asp.net-mvc routes


    【解决方案1】:

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

    基本上,正如this 问题所回答的那样,您不能在路线中间有可选路段。

    【讨论】:

    • 我不明白为什么不能省略,因为我为其提供了默认值。
    • 因为它是这样设计的,主要是出于性能原因。
    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    相关资源
    最近更新 更多