【发布时间】:2012-01-31 17:28:51
【问题描述】:
我刚刚将我的 Asp.Net Mvc 2 项目更新为 Mvc 3,突然我的链接停止工作。当我打开一个页面时,页面上的所有链接都会重定向回自身。
此外,一些重定向到以前在以前版本中有效的操作不再有效。它一直说“路由表中没有路由与提供的值匹配。”。我使用 RouteDebug 查看发生了什么,但找不到任何问题。
更新
这是我正在使用的路线之一:
// ** Standard route. **
context.MapRoute(
"group_default", // Route name
"{language}/{organisation}/Research.aspx/{controller}/{action}/{organisationId}/{parameter}/",
// URL with parameters
new
{
area = "research",
language = "en-US",
organisation = "",
controller = "Home",
action = "Index",
organisationId = UrlParameter.Optional,
parameter = UrlParameter.Optional
}, // Parameter defaults
new[] { "Project.Web.Areas.Research.Controllers" }
);
正如您在下面我的回答中看到的那样,问题是由两个 UrlParameter.Optional 一个接一个引起的。这是 Mvc 3 中的一个错误
【问题讨论】:
-
我们当然需要查看路线,为什么不首先添加它们呢???
-
在这里大胆猜测:您的路线未正确注册。您在
.asax文件中设置的路由是使用一堆需要大量字符串的重载方法设置的。也许他们改变了这些参数的顺序?否则,如果您使用默认路由系统,则您的控制器未注册(或不在包含的命名空间中)。在没有看到您的几个控制器和.asax文件的情况下,我只能说这些。
标签: asp.net-mvc asp.net-mvc-routing