RouteConfig и культура в MVC5 - PullRequest
0 голосов
/ 07 марта 2020

Я пробую два разных подхода к настройке маршрутов на своем многоязычном веб-сайте.

С RouteConfig.cs на обоих языках хорошо работает следующее:

    route = routes.MapRoute(
      name: "DataVesselRegister",
      url: "{culture}/Data/staff",
      defaults: new { action = "Index", controller = "Staff", culture = defaultCulture.Name },
      constraints: new { culture = new SiteCultureConstraint(AppConfig.Sitename) }
    );
    // A route value determines the culture of the current thread
    route.RouteHandler = new MultiCultureMvcRouteHandler();

Однако, когда я пытаюсь сделать то же самое, используя вместо этого атрибут Route:

  [Route("{culture}/data/staff")]
        [HttpGet]
        public ActionResult Index()
        {

Сайт остается на английском языке sh, который является языком по умолчанию.

Почему я не могу достичь такое же поведение с атрибутом маршрута в контроллере.

1 Ответ

0 голосов
/ 07 марта 2020

Подпись метода действия не включает переменную культуры. Вы должны изменить свой метод действия, чтобы передать переменную из URL.

public ActionResult Index(SiteCultureTypeName culture)
{
  ...
}
...