0

我有一个问题一直在思考。

从我在浏览器中输入 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 中的“主页”与HomeController

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

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

4

1 回答 1

0

简而言之:

  1. DefaultControllerFactory使用反射按名称查找并实例化控制器(更多信息
  2. ControllerActionInvoker使用反射按名称查找并调用动作(更多信息

可以在这里找到良好的整体描述。

于 2013-03-20T17:24:39.753 回答