0

従わなければならない特定のフォルダー構造 (/countrycode/language/) があるため、以下のようにルートを設定しています。

routes.MapRoute(
    "en-us",
    "us/en/{action}/{id}",
    new { Controller = "XXX", action = "Index", cc = "us", ll = "en", id = UrlParameter.Optional }
);

routes.MapRoute(
    "fr-fr",
    "fr/fr/{action}/{id}",
    new { Controller = "XXX", action = "Index", cc = "fr", ll = "fr", id = UrlParameter.Optional }
);

routes.MapRoute(
    "de-de",
    "de/de/{action}/{id}",
    new { Controller = "XXX", action = "Index", cc = "de", ll = "de", id = UrlParameter.Optional }
);

コントローラーが 1 つと、そのコントローラーに複数のアクションがあります。アクションにリダイレクトしようとしたり、ビュー内のアクションにリンクしようとすると、現在 /fr/fr/ にいる場合でも、URL は常に /us/en/ で始まります。

例: 現在のルートが /fr/fr/ の場合

@Html.ActionLink("fooText", "fooAction")
@Url.Action("barAction")
return RedirectToRoute("Index");

すべてが次のようになります

/us/en/fooAction
/us/en/barAction
/us/en/

これらのメソッドを正しい URL にリンクするにはどうすればよいですか?

4

1 に答える 1

1

OK の代わりに:

@Html.ActionLink("fooText", "fooAction")

私は使用する必要があります:

@Html.RouteLink("fooText", "fr-fr", new { controller = "XXX", action = "fooAction" })
于 2013-05-13T10:34:33.857 に答える