【发布时间】:2010-03-13 14:29:34
【问题描述】:
我定义了以下路线:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
// Added custom route here!
routes.MapRoute(
"CatchAll",
"{*catchall},"
new { controller = "Error", action = "NotFound" }
);
}
没什么新东西 - 这是默认的 ASP.NET MVC1 RegisterRoutes 方法,添加了一个自定义路由。
现在,如果我转到以下网址,我会得到 404...
http://whatever/Home/MissingActionMethod
所以在HomeController 中没有名为MissingActionMethod 的ActionMethod。那么,这是否意味着,如果我转到上面定义的第一条路线.. 并且找不到操作.. 然后我会回来尝试第二条路线吗?重复冲洗?
或者一旦我匹配了一条路线,我就会尝试并执行该路线..如果我失败了(即,发现动作丢失)..那么..运气不好?蹦蹦跳跳?
干杯!
编辑/更新:
非常感谢您的回复,但他们没有正确阅读我的问题 :( 我知道 1)路线的顺序很重要 b) haack 的路由调试器
但我的问题与此无关。我在问..如果第一条路线已“处理”..但失败了..它会从列表中转到下一条吗?
所以,在我上面的例子中。第一个名为“默认”的路由与请求的 url/资源匹配......但是当框架试图找到一个缺少的动作时......它是 404 的。
所以..这是否意味着框架首先匹配“默认”路由..尝试它..失败..返回路由列表..尝试找到匹配的 next 路由.. 最后失败了,然后就放弃了?
或者它只找到它匹配的第一个也是第一个路由..如果它找不到控制器和/或动作..然后它就放弃了? (这是我怀疑的)。如果是这样.. 那么它是如何计算出 404 的呢?
更新 #2:
Phil Haack actually talks about my question,有点……但没有回答我好奇的部分 -> 它如何以及在何处确定找不到 404 资源。
【问题讨论】:
-
问:ASP.NET MVC 路由是如何工作的?答:很好! :)
-
@Arnis L. 但可能会更好。 :)
-
@Pure.Krome 抱歉。我想那一刻我又感到头晕了。 :D
标签: asp.net-mvc routes