C# 从外部dll中存在的控制器调用视图

C# 从外部dll中存在的控制器调用视图,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我有一个外部控制器的dll文件,作为external.dll存在于应用程序的bin文件夹中 控制器的代码如下所示 namespace External.Controllers { public class ExternalController : Controller { public ViewResult CustomerView() { return View(); } public

我有一个外部控制器的dll文件,作为external.dll存在于应用程序的bin文件夹中

控制器的代码如下所示

namespace External.Controllers
{
    public class ExternalController : Controller
    {
        public ViewResult CustomerView() 
        {
            return View();
        }

        public ViewResult SupplierView()
        {
            return View();
        }
    }
}
如果我最初在global.asax文件中将其作为

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}", // URL 
    new { controller = "External", action = "CustomerView" });
调用控制器方法并加载页面

问题:我不希望最初将该页面作为默认页面调用,而是在应用程序的后期根据用户请求进行调用。 因此,当页面被称为/External/CustomerView时,它无法找到该方法。 它抛出了以下错误:

无法访问请求的页面,因为该页面的相关配置数据无效

我也试过这个

 routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}", // URL with parameters
    new { controller = "Common", action = "Login" },
    new[] { "External.Controllers" });

但是它不起作用。

您可以通过使用VirtualPathProvider来实现,它知道如何从程序集的嵌入式资源中读取视图。看。

我不明白你的问题。你说它有效,然后你说你尝试了另一种无效的方法。合乎逻辑的答案是避免使用第二种方法。@RobertHarvey:请看编辑是路由的“外部”部分,用户请求与其他请求的区别是什么?请注意,您可以定义多个路由。您看到了吗?