Asp.net mvc 路由/解析asp.net mvc

Asp.net mvc 路由/解析asp.net mvc,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我一直在想一个问题 从在浏览器中输入URL并单击enter,到相应控制器中的代码实际执行,会发生什么情况 假设我有一个asp.net mvc应用程序和一个像这样的普通控制器: public class HomeController : Controller { public ActionResult About(int id = 25) { //code } } 因此,如果我输入像myUrl/home/about?id=56这样的值,就会调用该控制器。我知道有一种路由模式,

我一直在想一个问题

从在浏览器中输入URL并单击enter,到相应控制器中的代码实际执行,会发生什么情况

假设我有一个asp.net mvc应用程序和一个像这样的普通控制器:

public class HomeController : Controller
{
  public ActionResult About(int id = 25)
  {
    //code
  }
}
因此,如果我输入像
myUrl/home/about?id=56
这样的值,就会调用该控制器。我知道有一种路由模式,比如默认声明的
{controller}/{action}/{id}
。但是,如果URL与该模式匹配,那么是否创建了控制器实例,或者发生了什么?是否有一些解析器类或类似类?是否有一个包含所有控制器的列表,以便URL中的“主”与
主控制器匹配

我知道控制器签名中的id参数将在模型绑定的帮助下绑定到请求上下文中相应的id值。但是这里肯定有很多其他的魔法在发生

希望有人能帮助一个新的困惑的asp.net mvc用户

简而言之:

  • DefaultControllerFactory
    使用反射()
  • ControllerActionInvoker
    使用反射()按名称查找并调用操作
  • 可以找到良好的总体描述