2010-02-04 2 views
1

장바구니를 개발 중입니다. 일부 기능은 사용자의 통화를 선택하는 것입니다.Shopping Cart에서 ASP.NET과 관련된 문화권

드롭 다운 목록이 있고 선택한 색인이 변경되면 culture 코드 (예 : en-GB 또는 en-US)를 찾은 다음 현재 세션의 culture를 변경하는 코드가 작성되었습니다. 또한 주어진 환율을 사용하면 가격이 변경됩니다 ...

현재 기본 문화권으로 en-GB가 있습니다. 누군가가 en-US 문화를 선택하면 모든 것이 잘 작동합니다. 통화가 변경되고 (모든 통화 레이블은 ToString ("C")로 설정 됨) 환율이 변경됩니다.

드롭 다운 목록을 사용하여 en-GB를 다시 선택하면 환율이 변경되어 (코드가 작동하는 것을 알 수 있음) 디버깅 후 culture 세션이 en-US에서 en으로 변경되었음을 알 수 있습니다 -GB이지만 통화는 $가 아닌 $로 표시됩니다.

나는 이것이 왜 일어나고 있는지 정말로 이해할 수 없다. 내가 세션 문화를 변화있을 때

protected override void OnLoad(EventArgs e) 
{ 

    if (Session["Culture"] != null) 
    { 
     string culture = Session["Culture"].ToString(); 
     Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Session["Culture"].ToString()); 
    } 

    base.OnLoad(e); 
} 

이 왜 다시 £로 통화를 변경하지 않습니다 : 코드는 내가 문화에 따라 올바른 통화를 표시하는 각 페이지의 Page_Load 이벤트를 무시하고있어, 매우 간단합니다 en-US에서 en-GB로?

+0

문화권 문자열을 볼 때 en-GB가 표시되므로 ToString ("C")을 사용할 때 통화가 변경되어야한다고 생각했을 것입니다. ko-ko를 ko-ko로 변경하면 제대로 작동하지만 $ 기호가 표시됩니다. – Paul

답변

1

당신은 Session [ "Culture"]! = null인지 확인하기 때문에 Session [ "Culture"]가 null이 아니므로 문화권을 두 번째로 설정하도록 제한합니다.

+0

스위스 프랑에 대해 fr-CH와 같은 다른 문화권을 만들면 USD와 스위스 프랑간에 아무런 문제가 없어 질 수 있습니다. 어떤 이유로 든 en-GB로 다시 변경할 때만 통화 기호를 업데이트합니다. 그것은 $가 아니라 £를 표시합니다. – Paul

1

데이터베이스 항목에서 어떤 이유로 든 char (10) 데이터 형식 이었기 때문에 텍스트를 자르는 것을 잊어 버렸습니다. 이로 인해 프레임 워크에서 문화를 발견하지 못하고 'en-GB'를 찾을 수 없으므로 en-US로 다시 돌아갑니다.