我正在研究簡單的MVC2多租戶應用程序。我的問題是,如何確定用戶在url中要求哪個租戶門戶? 我需要有發生的情況是這樣的:確定在多租戶MVC網站中路由到哪個門戶
- 到http://localhost的請求應到標準的主控制器的索引頁
- 到http://localhost/client1的請求應該去ClientPortalHome控制器的索引頁
- 到的請求http://localhost/client1/LogOn會去客戶特定登錄頁
以下兩種途徑實現這一目標,似乎很好地工作。
routes.MapRoute(
"Client Portal Default", // Route name
"{clientportal}/{controller}/{action}/{id}", // URL with parameters
new { controller = "ClientPortalHome", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults,
);
我的問題是我如何確定哪個客戶端門戶已被要求(client1在上面的例子中)?
我嘗試使用這樣的:
private void Application_BeginRequest(Object source, EventArgs e)
{
var route = RouteTable.Routes.GetRouteData(new HttpContextWrapper(Context));
var currentPortal = route.GetRequiredString("clientportal");
Context.Items.Add("ClientPortalName", currentPortal);
}
的問題是,它要求所有路線和拋出異常中家庭控制器的情況下,因爲路線不包含「clientportal」條目。
什麼是最好的方式來確定哪個門戶已被請求,所以我可以確保它存在並顯示客戶端特定的主頁?我需要一個自定義路由處理程序嗎?
預先感謝您。
裏克
爲什麼你需要知道HomeController上的clientportal?有一些客戶特定的內容嗎?我問這,因爲你有一個客戶端特定的HomeController(ClientPortalHome) – davehauser 2010-08-19 17:52:42
我不需要它的HomeController,但我確實需要它爲ClientPortalHomeController和一堆其他控制器。我計劃爲所有客戶端門戶主頁提供一個控制器。是的,我需要從數據庫中提取一些客戶特定的內容並顯示(css,text和jpg)。我編輯了這篇文章,以便更清楚地瞭解錯誤。 – rboarman 2010-08-19 18:35:32