gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 路由如何工作?

转载 作者:行者123 更新时间:2023-12-04 12:25:26 27 4
gpt4 key购买 nike

我定义了以下路线:

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

所以没有 ActionMethodMissingActionMethodHomeController .那么,这是否意味着,如果我转到上面定义的第一条路线.. 并且找不到操作.. 然后我要回来尝试第二条路线吗?重复冲洗?

或者,一旦我匹配了一条路线,我就会尝试执行该路线 .. 如果我失败了(即,发现操作丢失).. 那么 .. 运气不好?博斯基?

干杯!

编辑/更新:

感谢大家的回复,但他们没有正确阅读我的问题:(我知道
1)路线的顺序很重要
b) haack 的路由调试器

但我的问题与此无关。我在问..如果第一条路线被“处理”..但失败..然后它会在列表中向下一个吗?

所以,在我上面的例子中。第一个名为“默认”的路由与请求的 url/资源匹配......但是当框架试图找到一个缺少的 Action 时......它是 404 的。

所以..这是否意味着框架首先匹配“默认”路由..尝试它..失败..回到路由列表..试图找到下一个匹配的路由..最后失败所以它然后放弃?

或者它只找到它匹配的第一个也是第一个路由..如果它找不到 Controller 和/或 Action ..然后它就放弃了? (这是我怀疑的)。如果是这样..它是如何找出404的?

更新#2:

Phil Haack actually talks about my question ,有点......但没有回答我好奇的部分 - >它如何以及在哪里确定找不到404资源。

最佳答案

我不认为它会检查第二条路线,因为指定的第一个路线是默认的。我认为如果你切换它们,它会检查 CatchAll,看到它与 URL 中指定的路由不匹配,然后回退到默认值,因为你只提供 Controller 名称,而不是路由。我想如果你想让 CatchAll 做任何事情,你必须点击 http://whatever/CatchAll/Error/MissingActionMethod ,并且它必须在默认值之前出现。

this以获得更深入的信息。

关于asp.net-mvc - ASP.NET MVC 路由如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2438668/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com