目前有三种语言,当用中文,英文登录的时候没有错,当用法文登录的时候,这句话出错: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);
}
我的代码如下:
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);
}
Convert.ToDouble( ..., CultureInfo.InstalledUICulture);
Convert.ToDouble( ..., CultureInfo.InvariantCulture );
因为系统中很多地方都用到了Convert.toDouble,如果这样修改的话,基本上整个系统都要修改,所以能否有一个通用的方法,设置一下,可以不用改各个页面的代码??
在语言初始化的时候这样写:
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
Thread.CurrentThread.CurrentUICulture = new CultureInfo(strCurrentCulture);