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

时间:2013-11-18 08:36:41

标签: c# asp.net-mvc

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

一个人解释得那么少,所以我只是不明白如何实施。这是帖子网址 In asp.net mvc is it possible to make a generic controller?

他说

您希望/Product/Index触发MyController<Product>.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函数。我需要在基本控制器中编写此函数吗?

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

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

2 个答案:

答案 0 :(得分:9)

您需要实施IControllerFactory(或继承自DefaultControllerFactory,其中包含一些额外的功能)。之后,使用SetControllerFactory方法将控制器工厂设置为Application_Start

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

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

答案 1 :(得分:2)

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

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