【发布时间】:2011-06-04 18:22:56
【问题描述】:
我对路由有一个相当特殊的问题。
在不用担心配置一年后回到路由,我使用默认路由并忽略资源路由:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
// Route name
"{controller}/{action}/{id}",
// URL with parameters
new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
});
我有一个RulesController,其中包含对Index 和Lorem 的操作以及一个Index.aspx、Lorem.aspx 在“视图”>“规则”目录中。
我在主页面上有一个针对规则/索引的 ActionLink:
<li><div><%: Html.ActionLink("linkText", "Index", "Rules")%></div></li>
链接被呈现为http://localhost:12345/Rules/ 并得到 404。
当我在 URL 中键入 Index 时,应用程序会将其路由到操作。
当我将默认路由操作从"Index" 更改为"Lorem" 时,操作链接将呈现为http://localhost:12345/Rules/Index 添加Index,因为它不再位于默认路由上,并且应用程序路由到索引操作正确。
我使用过Phil Haack's Routing Debugger,但输入网址http://localhost:12345/Rules/ 也会导致404。
我想我已经涵盖了所有新手错误、相关的 SO 问题和基本的 RTFM。
我假设“规则”不是路由中的任何保留字。 除了更新路由和调试它们,我还能看什么?
【问题讨论】:
-
您是否定义了任何 IgnoreRoutes?您的网站目录中是否有一个名为“Rules”的文件夹?
-
我确实有默认的忽略路由(现在添加到问题中),并且在文件夹上是;架构师还没有为 Business Objects 创建另一个项目,所以那里有一个“Rules”文件夹。我会重新组织和测试。添加此评论作为答案,以防万一。
-
去过那里,做到了。我花了很长时间才找到问题!
标签: asp.net-mvc routing http-status-code-404 actionlink