0

jQuery GlobalizationjQuery UI Sliderの両方を使用する ASP.NET MVC 3 アプリを開発しています。

このアプリをブラジルのポルトガル語 (pt-BR) にローカライズしており、英語もサポートしています。

問題は、言語をポルトガル語に変更すると、すべてのモデル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 グローバリゼーションを使用して、次のように UI に正しい値を表示する必要があります。

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

それは少なくとも動作します...

私の質問は:

これを行うためのより良い方法または標準的な方法はありますか?

つまり、カルチャを pt-BR に切り替えると、数値が ( , ) で区切られます。これは私の観点では正しいです。制限は、jQuery Slider が値を受け取る方法にあります。

補足するために: から来た方法で値を渡そうとすると、次の@Modelようなものになり、明らかに壊れます (パラメーター値自体がコンマで区切られているため):

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

1 に答える 1

1

スライダーはInvariantCulture値を受け入れるため、その値を指定する必要があります。メソッドを変更するだけです。

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

ところで。解析が行われていないため、ParseValueはここでは最適な名前ではありません。FormatValueの方が良い音になります。
ところで。元の方法は、一部のカルチャでは正しく機能しません(値が小さい場合は表示されない場合がありますが、100を超える場合は悪いことが発生する可能性があります)。浮動小数点としてドットが必要な場合は、常にInvariantCultureを使用してください。

于 2011-05-02T19:14:44.217 に答える