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

本文关键字:控制器 调用 视图 存在 dll 从外部 | 更新日期: 2023-09-27 18:32:06

我有一个外部控制器的dll文件作为外部控制器.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" });

但它没有用。

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

可以使用知道如何

从程序集的嵌入资源中读取视图的 VirtualPathProvider 来执行此操作。请参阅 http://weblogs.asp.net/ricardoperes/loading-asp-net-mvc-controllers-and-views-from-an-assembly。