【问题标题】:How to implement a custom controller factory ASP.NET MVC [duplicate]如何实现自定义控制器工厂 ASP.NET MVC [重复]
【发布时间】:2013-11-18 08:36:40
【问题描述】:

我是 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 高级领域为像我这样的新手寻找指导。谢谢

【问题讨论】:

  • 在答案中,它派生自 DefaultControllerFactory。对于这个问题,你必须实现 IControllerFactory。从 DefaultControllerFactory 派生没有帮助。
  • DefaultControllerFactory 也可以。显示的代码没有覆盖,因此假设它需要 IControllerFactory。两种方法都可以。

标签: c# asp.net-mvc


【解决方案1】:

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

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

希望这可以为您澄清一点。

【讨论】:

  • 你能把我重定向到任何关于 IControllerFactory 接口的文章吗?谢谢
  • @Thomas IoC 是使用自定义控制器工厂的最佳示例之一。本文可能对您有所帮助:mikesdotnetting.com/Article/117/…
【解决方案2】:
  1. 您需要创建一个实现 IControllerFactory接口。
  2. 您可以忽略 ReleaseController 方法。
  3. 您可以为 GetControllerSessionBehavior 方法返回 SessionStateBehavior.Default。
  4. 在Application_Start中,设置Custom ControllerFactory如下:

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

【讨论】:

  • 你能把我重定向到任何关于 IControllerFactory 接口的文章吗?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多