如何推动自定义控制器工厂ASP.Net MVC

我是mvc地区的新手。 所以我还在学习,并试图在MVC中学习很多先进的领域。 所以我正在阅读关于自定义控制器工厂ASP.Net MVC的post。

一个人解释得那么少,所以我只是不明白如何实施。 这里是post url 在asp.net mvc中是否可以制作通用控制器?

他说

您希望/Product/Index触发MyController.Index()

这可以通过编写自己的IControllerFactory并实现CreateController方法来实现,如下所示:

 public IController CreateController(RequestContext requestContext, string controllerName) { Type controllerType = Type.GetType("MyController").MakeGenericType(Type.GetType(controllerName)); return Activator.CreateInstance(controllerType) as IController; } 

需要更多示例代码。 只是不明白在哪里定义CreateController函数。 我需要在基本控制器中编写此function吗?

当请求来自/Product/Index/Customer/Index如何在基本控制器中调用索引方法?

所以在MVC高级领域寻找像我这样的新手的指导。 谢谢

您需要实现IControllerFactory (或从DefaultControllerFactoryinheritance,其中包含一些额外的function)。 之后,使用SetControllerFactory方法在Application_Start设置控制器工厂:

 ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory()); 

希望这能为您澄清一些事情。

  1. 您需要创建一个实现IControllerFactory接口的类。
  2. 您可以忽略ReleaseController方法。
  3. 您可以为GetControllerSessionBehavior方法返回SessionStateBehavior.Default。
  4. 在Application_Start中,按如下方式设置Custom ControllerFactory:

    ControllerBuilder.Current.SetControllerFactory(typeof运算(CCustomControllerFactory));