【问题标题】:How to set {city} in all the routes MVC 5如何在所有路线 MVC 5 中设置 {city}
【发布时间】:2016-02-15 15:13:33
【问题描述】:

我正在开发一个市场应用程序,它应该具有映射到不同城市的不同产品和供应商。 这个想法是我需要将 CurrentCity 存储在上下文中,以便我可以使用它来构造 url、过滤数据、获取交付区域等。 例如

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 上下文)。

但第一种方法的问题在于,所有的 Action 方法都需要将“city”作为参数,并且我需要在上下文中使用它来执行类似的操作

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

如果我使用第二种方法,那么我认为我不会得到其中包含城市的网址。

理想情况下,我正在寻找一种解决方案,通过该解决方案可以将城市参数作为基本路线/段注入 MVC RouteDictionary 中,以便相应地生成所有 Url(使用 @url 助手)。

这是可能的还是有更好的方法来解决这个问题? 如果有人能告诉我一个方向,我将不胜感激。

【问题讨论】:

    标签: asp.net-mvc routes marketplace


    【解决方案1】:

    但是第一种方法的问题是所有的Action方法都需要有“city”作为参数

    这个假设是不正确的,因为 MVC 在生成 URL 时会自动传递来自当前上下文的值,所以不需要显式传递 city,只要在路由中配置并出现在 URL 中即可。请参阅this answer,了解如何利用此行为进行本地化,这与您正在做的事情类似。

    【讨论】:

      猜你喜欢
      • 2016-05-09
      • 2020-04-17
      • 2014-05-21
      • 2013-12-05
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 2014-08-16
      • 2011-08-04
      相关资源
      最近更新 更多