我試圖實現一個多租戶MVC3應用程序。包括子域請求在內的所有url請求都被定向到主應用程序。解決方案具有默認的主控制器和一個名爲「客戶端」的區域。所以有2條路線。MVC3 - 控制器從根區而不是從區域返回視圖
上的clientareacontext.MapRoute(
"Client_default",
"{controller}/{action}/{id}",
new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional },
new {controller = new ClientAreaConstraint()},
new[] { "MainApp.UI.Areas.Clients.Controllers" });
這在全球ASAX
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional },
new[] { "MainApp.UI.Controllers" }
);
一個用於區域和一個主一個
此。在該區域的路由中,我添加了一個路由約束,該約束檢查url是否具有子域名,如果是,則返回true。
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
var url = httpContext.Request.Headers["HOST"];
var clientName = url.Split('.')[1];
return clientName != "mainsite";
}
這工作和區域控制器正在獲取子域請求。但是當我嘗試調用返回視圖()。它在主文件夾中查找視圖,而不在區域文件夾中查找。 我的網址看起來像這樣 http://www.client.mainsite.com/並且它沒有區域名稱。是因爲那個嗎? 可能是什麼問題?請幫助
發現問題,我在開發過程中重命名了Area名稱。我重命名了文件夾和類名。但未能在區域註冊文件中重命名「Areaname」,導致從根目錄中選取回退和視圖。在根中我有一個相同的控制器和相同的視圖文件夾 – 2012-07-09 07:03:42