這是我的場景。在不同的MVC項目中,我有兩個具有相同名稱的控制器。每個控制器可以包含相同的操作(同名),但也可以包含不同的操作(未在其他控制器中指定)。 我註冊了兩條路線,每條路線都有自己的命名空間。不同命名空間中的兩個控制器,每個控制器中的不同操作
當我瀏覽到「Controller/Action1」頁面時,這是可以的。 當我瀏覽到「控制器/ ActionInSecondController」(該行動不在第一個控制器)時,它會拋出一個404.
是否有可能以及如何能夠調用第二個控制器的操作方法?
(注:我添加了一個引用的第二個項目,它的dll被編譯到相同的bin文件夾位置)。
我的路由定義:
routes.MapRoute(
name: "Default1",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new string[]{ "Site1.Controllers" }
);
routes.MapRoute(
name: "Default2",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new string[]{ "Site2.Controllers" }
);
如果你包含了你的路由定義代碼,並且削減了你的控制器類的版本,解密就會容易得多。 – jmoerdyk
兩個項目中的兩條路線相同。這完全取決於哪個項目正在接受Web請求。所有的請求都會發到第一個。 – andleer
這兩個路由都按照該順序位於Site1的路由配置中。這個項目只是一個準系統空的項目,我試圖獲得一個概念證明。我需要的行爲是如果Site1的控制器不包含該操作,則會調用Site2的操作。 – user2921642