ASP.NET VB将数字转换为不变量

时间:2013-12-19 15:59:35

标签: asp.net vb.net

在多语言网站上,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

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:0)

问题是你用一个已经是字符串的参数调用String.Format - Comm.Parameters("@VoucherValue").Value.ToString()的结果。 ToString调用未指定字符串格式,因此默认格式与当前文化一起使用。

另外,您的格式字符串错误。它应该以参数索引开头,后跟冒号,然后是参数的格式说明符。

尝试将值直接传递给String.Format方法:

responseString = String.Format(CultureInfo.InvariantCulture, "{0:###0.0000}", _
   Comm.Parameters("@VoucherValue").Value)
相关问题