问一个简单的问题,当您为新的 MVC ASP.Net 应用程序创建新的 Controller 时,它如何知道要使用哪个 Controller 。更具体地说,假设您创建了一个新 Controller 并将其命名为 SockController 以便使用所述 Controller ,我将导航到 http://mywebapp/sock
。 Web 应用程序如何知道/Sock/链接到 SockController?某处有映射吗?或者,如果不是,如果您在创建 Controller 时从名称中调用省略 Controller ,即称其为 SockCont,会发生什么情况。
注意:我不是网络开发人员,我只是好奇,所以请不要发布包含大量文本的页面链接,我正在寻找一个简短的简单答案。
最佳答案
ASP.NET 路由通过获取路由值并将“Controller”附加到末尾,从 URL 中提取 Controller 的名称。因此“/home/”返回“HomeController”。
然后,ASP.NET 使用反射来遍历项目程序集(或引用的程序集)中的每个类,以查找继承自 System.Web.Mvc.Controller 并称为“HomeController”的类。然后,它使用默认的无参数构造函数来创建它的实例。
然后它将 Route 操作与 Controller 的方法进行匹配。
这个过程称为“Dispatch”,类似的模式在 PHP、Ruby-on-Rails 等中也可以看到,只不过这些动态语言具有将类名解析为实际对象的不同方式(CakePHP 使用类自动加载绑定(bind))例如,找到类定义)。
关于c# - 对 MVC Controller 感到好奇吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11746098/