2016-02-15 20 views
0

我正在開發一個市場應用程序,該應用程序應該具有映射到不同城市的不同產品和供應商。 這個想法是我需要在上下文中存儲CurrentCity,以便我可以使用它來構建URL,過濾數據,獲取傳送區域等。如何在所有路線中設置{city} MVC 5

www.mywebsite.com/cityA/listings 
www.mywebsite.com/cityB/listings 

www.mywebsite.com/cityA/cart 
www.mywebsite.com/cityB/cart 

有點像MoonPig網站(https://www.moonpig.com/uk/Gift/Flowers/

目前,我途經城市作爲參數,幾乎所有的控制方法和存儲也是它在cookie中。

另外,我也想創建一個BaseController,並可能將其注入OnActionExecuting(ActionExecutingContext上下文)中。

但與第一種方法的問題是,所有的操作方法,需要有「城市」作爲參數,我需要把它在上下文做這樣的事情

@Url.Action("Index", "Listings", new {city = cityName}) 

如果我用的是第二的方法,那麼我不認爲我會得到其中有城市的網址。

我正在尋找一種解決方案,我可以在MVC RouteDictionary中將城市參數注入爲基本路由/段,以便所有Url都相應地生成(使用@url helper)。

這是可能的還是有更好的方法來解決這個問題? 如果有人能指示我一個方向,我會很感激。

回答

0

但與第一種方法的問題是,所有的操作方法,需要有「城市」作爲參數

這種假設是不正確的,因爲MVC會自動從當前上下文生成時傳遞值URL,所以只要在路由中配置並存在於URL中,就不需要明確地通過city。請參閱this answer瞭解如何利用此行爲進行本地化,這與您正在進行的操作類似。