2010-07-22 2 views
0

CurrentThread.CurrentUICulture을 MasterPage의 DrownDownList에서 설정하는 가장 좋은 방법은 무엇입니까?MasterPage의 DropnDown에서 CurrentCulture 설정

모든 페이지에서 InitializeCulture()을 덮어 쓰지 않으려합니다. 세션 변수에 저장하고 HttpModule 또는 HttpHandler에 설정할 수 있습니까?

다른 문제는 페이지에 데이터 바인딩 된 언어 별 컨트롤이있는 경우 언어가 변경된 후에 데이터 바인딩이 필요하다는 것입니다.

감사합니다.

답변

2

나는 종종 pase 페이지 클래스를 만들고 InitializeCulture()를 재정의하기로 선택했다. 모든 페이지는 기본 페이지에서 상속되므로 모든 로직이 기본 페이지에 캡슐화됩니다. 이것은 내가 querystring을 사용하여 언어 기본 설정 변경을 전달하기 때문에 저에게 효과적입니다.

InitializeCulture()는 쿼리 문자열 인수, 기존 세션 값, 쿠키 기본 설정을 확인하고 브라우저의 현재 문화권을 기본값으로 설정하는 논리를 가지고 있습니다.

masterpage 드롭 다운 변경 이벤트에서 리디렉션을 할 수 있다고 가정합니다.

+0

사용자가 페이지에서 언어를 변경하고 언어 변경으로 인해 다시 데이터 바인딩해야 할 때 어떻게합니까? 어떻게 든 데이터 바인딩해야하는지 알기를 원합니다. – Jeroen

+0

언어를 유지하고 자신에게 리디렉션하십시오. –

+0

Dirk이 말했듯이 나는 세션과 쿠키에서 언어를 유지합니다. 리디렉션하면 상태를 잃을 가능성이있는 페이지가 다시로드됩니다. 즉각적인 언어 전환의 유용성과 현재 상태 (또는 유지 상태의 가치)를 유지하는 어려움 간의 균형을 유지해야합니다. 앱에 특수 언어 관련 목적이 없다면 사용자는 앱과 상호 작용하기 전에 언어를 전환 할 수 있으며 한 번만 수행하므로 인스턴트 전환의 가치가 제한됩니다. 어쨌든 어쨌든이 기능을 사용할 수있게 만들었습니다. 일부 비정상적인 상황에서 사용자가 상태를 잃을 위험이 적습니다. – HectorMac

1

나는 문화권을 쿠키에 저장하고 global.asax의 Application_BeginRequest에 설정한다. selectedindex가 영향을주기 위해 라이프 사이클에서 너무 늦게 이벤트를 변경했기 때문에 Server.Transfer (Request.Url.LocalPath)를 사용해야 만 처음 설정하면됩니다. 그것이 최고인지는 모르지만 그것은 나를 위해 일합니다.

관련 문제