【问题标题】:jQuery UI Slider and jQuery Globalization with value delimited by comma [ , ]jQuery UI Slider 和 jQuery Globalization,其值由逗号 [ , ] 分隔
【发布时间】:2011-05-02 18:58:24
【问题描述】:

我正在开发一个同时使用 jQuery GlobalizationjQuery UI Slider 的 ASP.NET MVC 3 应用程序。

我正在将此应用本地化为来自巴西的葡萄牙语 (pt-BR),它还支持英语。

问题是,当我将语言更改为葡萄牙语时,所有 Model float 值都由逗号 (, ) 分隔,例如 7,7。然后我尝试设置 Slider 的初始值,但它只接受带有点 (.) 的值,例如 7.7。

为了克服这种情况,我正在这样做:

$.CreateSlider("#sliderHeight", "#Height", @Model.Height.FormatValue(), 0, 2.5, 0.01);

FormatValue 是一个扩展方法:

public static string FormatValue(this float value)
{
    return value.Value.ToString().Replace(",", ".");
}

您看到我必须将逗号分隔符替换为点分隔符,以便我可以设置 jQuery Slider 值。

然后我必须使用 jQuery Globalization 以这种方式在 UI 中显示正确的值:

$(textBox).val($.global.format(ui.value, 'n2'));

它至少可以工作......

我的问题是:

有更好或标准的方法吗?

问题是模型值以应有的方式出现,也就是说,当我将文化切换到 pt-BR 时,数字以 (, ) 分隔。这在我看来是正确的。限制在于 jQuery Slider 接收值的方式。

只是为了补充:如果我尝试以它们来自@Model 的方式传递值,我会有这样的东西,这显然会中断(因为参数值本身用逗号分隔):

$.CreateSlider("#sliderHeight", "#Height", 7,7 , 0, 2.5, 0.01);

【问题讨论】:

    标签: asp.net-mvc-3 localization numbers jquery-globalization jquery-slider


    【解决方案1】:

    您的滑块接受 InvariantCulture 值,因此您需要提供此类值。只需修改您的方法:

    public static string ParseValue(this float value)
    {
        return value.Value.ToString(CultureInfo.InvariantCulture);
    }
    

    顺便说一句。 ParseValue 不是最好的名称,因为没有进行解析。 FormatValue 听起来会更好。
    顺便提一句。您的原始方法不适用于某些文化(对于较小的值可能不可见,但对于大于即可能发生 100 件坏事)。如果您需要一个点作为浮点数,请始终使用 InvariantCulture。

    【讨论】:

    • ł:感谢您让我知道ToString(CultureInfo.InvariantCulture);。有效。我还考虑了您提到的更大的价值以及可能出现的问题。关于方法名:我改了。我没有注意到我给该方法起的名字,因为我试图让这段代码工作。 :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2016-04-24
    相关资源
    最近更新 更多