2012-04-27 18 views

答えて

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()メソッドをオーバーロード考えるかもしれません。

関連する問題