我是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高级领域寻找像我这样的新手的指导。感谢
答案 0 :(得分:9)
您需要实施IControllerFactory(或继承自DefaultControllerFactory,其中包含一些额外的功能)。之后,使用SetControllerFactory方法将控制器工厂设置为Application_Start
:
ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());
希望这能为你澄清一些事情。
答案 1 :(得分:2)
在Application_Start中,按如下方式设置Custom ControllerFactory:
ControllerBuilder.Current.SetControllerFactory(typeof运算(CCustomControllerFactory));