好的,我做了功课并搜索了 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()
帮助器,因此所有链接的格式都相同。
提前致谢!