【问题标题】:How to tell ASP.NET MVC to look for controllers in a library?如何告诉 ASP.NET MVC 在库中查找控制器?
【发布时间】:2010-09-15 23:48:27
【问题描述】:

对某些人来说,这肯定是一个微不足道的问题,但我还没有找到任何有关此的实际信息。

我有一个 ASP.NET MVC Web 应用程序。因为我喜欢编写可重用的代码,所以我想将我的控制器放入一个单独的库程序集中,并在多个 Web 应用程序中重用它们。

问题是,我如何告诉 ASP.NET MVC 它应该在其他程序集中寻找控制器而不是 Web 应用程序本身?

【问题讨论】:

    标签: .net asp.net asp.net-mvc .net-assembly


    【解决方案1】:

    您需要创建自己的 ControllerFactory。

    查看this链接

    基本上,如上所述创建 ControllerFactory,然后在您的 Global.asax 中,添加以下行:

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

    告诉 ASP.NET MVC 使用你的 ControllerFactory。

    关键是当你定义你的路由时,你需要给 ASP.NET MVC 一个关于这个程序集所在位置的“提示”:

    yourRoute.DataTokens = new RouteValueDictionary(
        new
        {
             namespaces = new[] { "SomeAssembly.Controllers" }
        });
    

    如果没有找到,则在常规命名空间(Web 应用程序)中查找。

    Here 是另一个链接,展示了如何创建自定义控制器工厂。

    祝你好运!

    【讨论】:

    • 谢谢,这正是我想要的。实际上,只需指定我的控制器所在的命名空间就足够了!
    • 酷。我从未尝试过整个命名空间的事情,但我目前使用控制器工厂进行依赖注入。很高兴它成功了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    相关资源
    最近更新 更多