2012-04-27 2 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() 방법 과부하를 고려해 볼 수 있습니다.

관련 문제