【问题标题】:Routing/Resolving asp.net mvc路由/解析asp.net mvc
【发布时间】:2013-03-20 09:53:19
【问题描述】:

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

从我在浏览器中输入 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 用户

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-routing


    【解决方案1】:

    简而言之:

    1. DefaultControllerFactory 使用反射 (more info) 按名称查找并实例化控制器
    2. ControllerActionInvoker 使用反射 (more info) 按名称查找并调用操作

    好的整体描述可以找到here

    【讨论】:

      猜你喜欢
      • 2014-11-14
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 2015-04-06
      • 2012-08-30
      • 2011-06-26
      • 2014-12-01
      • 1970-01-01
      相关资源
      最近更新 更多