在多语言网站上,AJAX调用会触发一个返回数字或文本消息的函数。然后,页内javascript对数据进行IsNumeric检查,并对消息进行警报或将值添加到现有数字。
问题是如果选择的语言不是EN,则数字会返回15,0000而不是15.0000,因此javascript会为添加的结果提供NaN。
尝试将数据库输出转换为不变文化失败,我无法解释原因: -
Using DBConn As New SqlConnection(GetConnectionString.DBConnStr.ToString())
Using Comm As New SqlCommand("ValidateVoucher", DBConn)
Comm.CommandType = CommandType.StoredProcedure
With Comm.Parameters
'Input Parameters
.AddWithValue("@VoucherCode", voucherCode)
.AddWithValue("@MemberID", CType(memberID, Integer))
.AddWithValue("@WeekDetailsID", CType(weekID, Integer))
.AddWithValue("@LanguageID", CType(languageID, Integer))
'Output Parameters
.Add(New SqlParameter("@ReturnMessage", Data.SqlDbType.VarChar, 500)).Direction = ParameterDirection.Output
.Add(New SqlParameter("@CurrencyCode", Data.SqlDbType.VarChar, 3)).Direction = ParameterDirection.Output
.Add(New SqlParameter("@VoucherValue", Data.SqlDbType.Money)).Direction = ParameterDirection.Output
End With
Try
DBConn.Open()
Comm.ExecuteNonQuery()
If Comm.Parameters("@ReturnMessage").Value = "OK" Then
responseString = Comm.Parameters("@VoucherValue").Value.ToString()
responseString = String.Format(CultureInfo.InvariantCulture, "{0.0000}", responseString)
Else
responseString = Comm.Parameters("@ReturnMessage").Value
End If
Catch
End Try
End Using
任何帮助表示赞赏
答案 0 :(得分:0)
问题是你用一个已经是字符串的参数调用String.Format
- Comm.Parameters("@VoucherValue").Value.ToString()
的结果。 ToString
调用未指定字符串格式,因此默认格式与当前文化一起使用。
另外,您的格式字符串错误。它应该以参数索引开头,后跟冒号,然后是参数的格式说明符。
尝试将值直接传递给String.Format
方法:
responseString = String.Format(CultureInfo.InvariantCulture, "{0:###0.0000}", _
Comm.Parameters("@VoucherValue").Value)