当前位置:  开发笔记 > 后端 > 正文

将控制器工厂添加到ASP MVC

如何解决《将控制器工厂添加到ASPMVC》经验,为你挑选了1个好方法。

我对工作中的大型项目有一个设计理念,我想我已经弄明白了,但我真的很想得到一些反馈:a)一般的想法,以及b)我提议的实施.

基本思路很简单:我想创建一个ASP MVC应用程序,可以在将来使用其他控制器和视图进行扩展,而无需重新编译代码.我们的想法是让一个MVC应用程序具有一组非常基本的功能,然后通过添加另一个'Application.dll'来扩展功能,该应用程序包含特定于该应用程序的控制器,数据和业务逻辑.视图将被简单地复制在安装期间进入与主MVC应用程序相同的目录.

问题是MVC在同一个程序集中的类型上进行路由,因此即使我将路由定义移动到数据库,MvcHttpHandler也无法将任何内容路由到新的Dll,因为它不"知道"控制器类型在里面.看一下MVC代码,我发现要加载控制器,他们只是调用Activator.CreateInstance,它只在当前程序集中查找.

我的解决方案很简单,但也许我错过了一些东西:我将通过直接替换ControllerFactory(不确定如何做)或通过在派生类中复制该功能来覆盖MvcHttpHandler.新代码将读取请求并尝试首先从当前程序集加载控制器,然后从扩展程序集加载控制器.一旦找到正确的程序集,我将使用CreateInstance并将该程序集传递给它以获得我想要的控制器.



1> Ben Robbins..:

本文结尾处展示了如何实现自己的ControllerFactory.基本上,您从DefaultControllerFactory派生,然后在global.asax中的Application_Start()中连接它.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有