为什么我可以在控制器中创建一个方法,只需放置一些参数,点击表单提交后,它就能自动识别出来呢?在内部,它是如何找到正确的方法并确定我只需要这些参数的呢?
为什么我可以在控制器中创建一个方法,只需放置一些参数,点击表单提交后,它就能自动识别出来呢?在内部,它是如何找到正确的方法并确定我只需要这些参数的呢?
MvcRouteHandler
的新实例,并将 URL 中分解的标记传递给它的 RouteValueDictionary。MvcRouteHandler
接受请求,尝试实例化控制器类实例。按照约定,它寻找一个名为 "XXXXXXController" 的类,在路由中,X 被替换为 {controller} 参数。MvcRouteHandler
的替代处理程序来覆盖框架的行为。该框架是非常可扩展的,因此您可以在许多点插入自定义功能。控制器、操作和视图的解析以及 ModelBinders 都涉及到相当多的代码。因此,最好您应该查看框架的特定部分并提出更详细的问题,以获取更好的答案。
幸运的是,ASP.NET MVC framework 已经开源, 因此如果你想了解它的全部工作原理,你可以获取代码并自己进行研究。这是一份非常好的代码,您肯定会从中学到很多东西。
然而,更重要的是,您应该查看 System.Web.Mvc.MvcHandler 和 System.Web.Mvc.ControllerActionInvoker 类,这将帮助您找到正确的答案。