gpt4 book ai didi

javascript - 在 javascript 中从 .NET/Razor 解析本地化数字的最佳方法是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 06:08:24 25 4
gpt4 key购买 nike

我有一个 .NET 应用程序,允许用户选择他们自己的语言和文化(日期/数字格式)。他们的区域性设置存储在 Thread.CurrentThread.CurrentCulture(也称为 Thread.CurrentThread.CurrentUICulture,但这是一个单独的问题)。

当我通过 Razor 打印出一个 var 时,它以本地化格式显示:

<span>@bignum</span> (renders as "123.456" or "123,456")

但是,我还需要将一些 .NET 变量传递给 Javascript:

var js_bignum = @bignum;

问题是在这种情况下 Javascript 不理解这些数字的本地化版本,所以它失败了,因为上面的语句变成了:

var js_bignum = 123,456;

可能是因为用户浏览器的文化设置与用户的webapp的文化设置不同。无论如何,这是我们需要能够处理的情况。

那么处理这个问题最简单的方法是什么?我可以创建自己的 Javascript ConvertToStandardNumberFormat(),它从 .NET 中获取一个字符串值并返回一个“标准”数字格式,但这看起来有点像 hack。有没有办法强制 .NET/razor 呈现非本地化格式的数字?

var js_bignum = @price.ToUnlocalizedFormat();  (Is there something like this?)

我只是想找出针对这种情况的最佳实践。

谢谢!

最佳答案

我会使用 @price.ToString(CultureInfo.InvariantCulture)

编辑

我不同意 João 的回答,认为这是一个坏主意™。我不建议重新发明轮子。如果您更喜欢更全面的方法,那么我会选择包括一个专用的 C# JSON 编码库(我会推荐 JsonFx.NET )。

最简单的方法是制作一个 HtmlHelper 扩展。像这样的东西:

public static class JsonExtensions {
public static string ToJson(this HtmlHelper html) {
return new JsonWriter().Write(t);
}
}

然后在 View 中使用它:

@Html.ToJson(price)

这应该处理原始类型和复杂类型。

之后我可能会重构一些东西并尝试提出一个更好的注入(inject)模式,这样我就不会在每次调用助手时创建一个新的 JsonWriter

但这比以静态帮助类的形式滚动您自己的序列化程序要灵活得多(并且经过测试)...

关于javascript - 在 javascript 中从 .NET/Razor 解析本地化数字的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8229848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com