4
A
答えて
1
あなたはこのような何かを行うことができます:
@Html.RouteLink("Switch Language", "Default", new {
controller = ViewContext.RouteData.Values["controller"],
action = ViewContext.RouteData.Values["action"],
id = ViewContext.RouteData.Values["id"],
language = "fr"
})
これはおそらく、このかかわらを処理するための拡張メソッドを作るために意味をなさないと思います。
2
ほとんどの場合、リンクレンダリングビューのViewModelまたはViewDataの一部として{language}
値を挿入することをお勧めします。あなたがこれを達成できる方法はいくつかあります。コントローラのOnActionExecuted()
メソッドのオーバーロードなど)。このアプローチをとるなら、私はすべてのコントローラを単一のベースコントローラから継承させることを提案します。あなたのビューで
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.Controller.ViewData["Language"] = GetUserLanguage();
base.OnActionExecuted(filterContext);
}
そして:
@Url.Action("Index", "Home", new { language = ViewData["Language"] })
また、あなたは自動的にこの値を追加し、ロジックとUrl.Action()
とHtml.ActionLink()
メソッドをオーバーロード考えるかもしれません。
関連する問題
- 1. ASP.NET MVCルーティングは、私は次のルート持っているルート
- 2. キープの@文字は、私は次のルートを持っている
- 3. ASP.NET MVCルーティング - 私は現在、次のルートを持っているURL
- 4. バックボーンルータは、私は、次のルータを持っているルート
- 5. 私はルートに次の行を持っているRailsの
- 6. 私はExpressプロジェクトで、次のルートを持っているエクスプレス
- 7. Apacheは、私は次のURLを持っているので、1
- 8. は、私は、次のURL構造を持っているのindex.php
- 9. は/私は次のURLを持っているnextJs
- 10. Pythonは次のように私はURLを持っている
- 11. 私は、次のコードを持っている外部のURL
- 12. 私は、次のURLを持っているJSON
- 13. BACKBONE.JS:私は私のアプリ<code>Router.js</code>にURLルートを持っているURLルート
- 14. Laravelは、私はこのルートを持っている私の見解ページ内のルートまたはURL
- 15. は、私は、次のXML文書を持っている別のルートのC#
- 16. Laravel 5 - 私は、次のURL持っているクエリ文字列
- 17. は、私は次のように定義のルートを持っている
- 18. は、ルータ反応し、私は私のアプリの主成分の次のルートを持っている各ルート要素
- 19. のparamが、私は次のルートを持っているLaravelプロジェクト、に取り組んでいるURL
- 20. 私は、私は次の行を持っているメイクファイルを、持っている
- 21. は、私は次のルートを持っているASP.NETコアプロジェクトでASP.NET CORE
- 22. URLは、私は私のURLを持っているPHP
- 23. は、私は次のような構造を持っているJSONタイプのデータソースを持っているURL
- 24. ルビー - 私はこのルートを持っている私は、テンプレート
- 25. 書き換えURL、私は、次のURLの持っているキーワード
- 26. htaccessファイルは、私は次のコードを持っている新しいURL
- 27. laravelコントローラは、コンパクトは、私が持っている私のルートで
- 28. jQueryのは、私は次のHTMLフォームに持って、同じURL
- 29. は、個別に、私は次の構造のURLを持っているハイブ
- 30. nginxのは、私は次のアドレスを持っているベースURLに