장바구니를 개발 중입니다. 일부 기능은 사용자의 통화를 선택하는 것입니다.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로?
문화권 문자열을 볼 때 en-GB가 표시되므로 ToString ("C")을 사용할 때 통화가 변경되어야한다고 생각했을 것입니다. ko-ko를 ko-ko로 변경하면 제대로 작동하지만 $ 기호가 표시됩니다. – Paul