目前有三种语言,当用中文,英文登录的时候没有错,当用法文登录的时候,这句话出错:Convert.ToDouble(lblPrice.Text.Trim()),错误是字符串格式不正确,但即使我用一个常量Convert.ToDouble("1")也会出错。
我的代码如下:
public partial class Test : PageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {        }        protected void btnTest_Click(object sender, EventArgs e)
        {
            txtPrice.Text = "*";
        }        protected void txtCertainValue_TextChanged(object sender, EventArgs e)
        {
            txtPrice.Text = Convert.ToString(Math.Round(Convert.ToDecimal(lblPrice.Text.Trim()) + Convert.ToDecimal(txtCertainValue.Text.Trim()), 2));
        }        protected void txtRate_TextChanged(object sender, EventArgs e)
        {
            txtPrice.Text = Convert.ToString(Math.Round(Convert.ToDouble(lblPrice.Text.Trim()) * Convert.ToDouble(string.Format("1.0{0}", txtRate.Text.Trim())), 2));
            //txtPrice.Text = Convert.ToString(Math.Round(Convert.ToDouble(lblPrice.Text.Trim()) * Convert.ToDouble(1+Convert.ToDouble(txtRate.Text.Trim())/100), 2));
        }PageBase:做了关于Culture的处理。 protected override void InitializeCulture()
        {
            string currentCultureID = "";
            if (Session["CultureID"] != null)
            {
                currentCultureID = Session["CultureID"].ToString();
            }
            string strCurrentCulture = ConfigurationSettings.AppSettings["DefaultCulture"].ToString();
            if (currentCultureID == "1")
            {
                strCurrentCulture = "zh-CN";
            }
            else if (currentCultureID == "2")
            {
                strCurrentCulture = "en-US";
            }
            else
            {
                strCurrentCulture = "fr-FR";
            }            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(strCurrentCulture);
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(strCurrentCulture);
        }

解决方案 »

  1.   

    如果总是1.0232的形式,那可以用语言文化无关的Convert
    Convert.ToDouble( ..., CultureInfo.InstalledUICulture);
      

  2.   

    更正2楼:如果总是1.0232的形式,那可以用语言文化无关的Convert 
    Convert.ToDouble( ..., CultureInfo.InvariantCulture );
      

  3.   


    因为系统中很多地方都用到了Convert.toDouble,如果这样修改的话,基本上整个系统都要修改,所以能否有一个通用的方法,设置一下,可以不用改各个页面的代码??
      

  4.   

    哈哈,多谢大家,问题已经解决。
    在语言初始化的时候这样写:
      Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(strCurrentCulture);