2016-02-15 21 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了解如何利用此行为进行本地化,这与您正在进行的操作类似。