0

好的,我做了功课并搜索了 SO,确实我发现了类似的问题,但没有报告我遇到的行为。

这是交易,我已经定义了一条路线:

routes.MapRoute("CategoryName", "Category/Name/{text}",
    new { controller = "Category", action = "Name", text = "" });

这里的转折如下:

这个网址:http://www.url.com/Category/Name/existingCategoryName

这个网址:http://www.url.com/Category/Name/anotherExistingCategoryName

两个 url都应该使用相同的控制器方法,public ActionResult Name(string text)但遗憾的是第一个 url 使用默认Index方法,第二个被正确路由。

我想知道为什么会发生这种情况,因为我已经使用 .net mvc 好几年了,从未经历过这种行为。

作为旁注,这里有一些事实:

  • 由于它正在路由到不同的方法,我怀疑它们内部的代码与它有关。
  • 当手动将类别写入数据库中不存在的类别名称时,它会通过该Name方法。
  • 路线放置正确,因为我知道与模式匹配的第一条路线将获胜。
  • 即使我尝试先放置CategoryName路线,行为也是一样的。
  • 在编写每个链接时,Category/Index我使用相同的@Html.RouteLink()帮助器,因此所有链接的格式都相同。

提前致谢!

4

1 回答 1

0

-您是否在失败的路线中使用标志?

也许您可以使用路由调试器找到更多信息

也许你可以看看这个问题:Failing ASP.NET MVC route。这是错误还是极端情况?

Phil Haack 还为您的问题提供了一个可能的答案:ASP.NET routing: Literal sub-segment between tokens, and route values with a character from the literal sub-segment

于 2012-04-15T08:57:45.980 回答