MikeSW is close about the route,但它聽起來像你不希望加盟商頁面與公司頁面共享任何控制器。我有一對夫婦其他的想法太:
routes.MapRoute(null, // do not name your routes, they are "magic strings"
"{tenant}/{controller}/{action}",
new
{
// strongly type controller, action, and area names using T4MVC
controller = MVC.Home.Name,
action = MVC.Home.ActionNames.Index,
// it sounds here like you want this controller for franchisees only,
// so corporate pages will use other controllers. if this is the case,
// tenant="default" // require the parameter by not supplying a default
});
的理由不來命名你的路由是因爲不點名地迫使你在某些HTML輔助和控制方法,使用某些過載。 RedirectToRoute
,@Html.RouteLink
和@Url.RouteUrl
等方法中的很多重載將路由名稱作爲第一個參數。通過省略路由名稱,這迫使我們使用僅依賴路由參數和HTTP方法的重載來解析控制器和操作。 (T4MVC在這裏也很有幫助,因爲它允許我們爲這些方法的參數強制鍵入區域,控制器和操作名稱。)
MVC將自動在呈現視圖的URL中使用「環境」路由參數。所以,如果你在URL domain.com/atl
和要鏈接到domain.com/atl/stuff
,可以輸出這樣一個超級鏈接:
@Html.RouteLink("Stuff", new
{
// this will render a link with the URL domain.com/atl/stuff
controller = MVC.Stuff.Name,
action = MVC.Stuff.ActionNames.Index,
// you do not need to include franchisee
})
(如果你想渲染只是URL爲一個普通的HTML <a>
標籤的href參數使用@Url.RouteUrl
代替)
在另一方面,如果你想從一個加盟商網站到另一條鏈路,你就必須指定專營參數:
@Html.RouteLink("Another franchisee in this state", new
{
// this will render a link with the URL domain.com/macon
controller = MVC.Home.Name,
action = MVC.Home.ActionNames.Index,
franchisee = "macon"
})
T4MVC似乎沒有爲我工作這麼熱。當試圖引用控制器中的視圖時,它給了我一個無效的參數錯誤。 – Nozoku 2012-04-13 16:47:58
奇怪的是,視圖在T4MVC中沒有參數。它們只是MVC對象的靜態屬性。在這裏張貼另一個問題,有人會幫助你。 – danludwig 2012-04-13 17:59:35
我最終修復了它。我不正確地引用它。我試圖在另一個控制器中引用一個視圖,我不知道如何執行它的語法,所以我嘗試了直到我認爲我找到了一些可行的方法,並且這是一種錯誤的方法。 – Nozoku 2012-04-17 02:47:43