我正在开发一个购物车,部分功能是选择您的货币。
我有一个下拉列表,当所选索引更改时,我编写了一些代码来查找文化代码(例如 en-GB 或 en-US),然后更改当前会话的文化。此外,使用给定的汇率会改变价格......
我目前将 en-GB 作为默认文化。当有人从下拉列表中选择 en-US 文化时,一切正常。货币变化(所有货币标签都用 ToString("C") 设置)和汇率变化。
当我再次使用下拉列表选择 en-GB 时,汇率发生了变化(所以我知道代码正在工作),调试后我可以看到文化会话已从 en-US 更改为 en-GB,但是货币仍显示为 $ 而不是 £。
我真的不明白为什么会这样。代码非常简单,我为每个页面覆盖 page_Load 事件以根据文化显示正确的货币:
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);
}
当我将会话文化从 en-US 更改为 en-GB 时,为什么它没有将货币更改回 £?