0

ビューで使用できる 10 進フォーマッタ拡張機能を作成しようとしています。何らかの理由で、必要な結果が得られません。

私の最初の拡張機能は次のようになりました。

public static string FormatCurrency(this decimal instance)
{
     return string.Format("{0:c}", instance);
}

すべてのサーバーが南アフリカに設定されているわけではなく、一部はまだデフォルトで米国に設定されていることがわかりました. そのため、通貨記号が常に正しく表示されるとは限りません。

通貨記号は気にしません、表示されなくても大丈夫です。フォーマッタを次のように変更しました。

public static string FormatCurrency(this decimal instance)
{
     return string.Format("{0:0.00}", instance);
}

必要なのは、値が 100000000 の場合は 100, 000, 000.00 として表示する必要があり、10000 の場合は 10, 000.00 として表示する必要があることだけです。現在、10 000.00 と表示されています。HTML を表示すると、次のようになります。

<td>10&#160;000.00</td>

私の見解では、次のように使用します。

@(Model.SpouseGrossSalary == null ? "N/A" : ((decimal)Model.SpouseGrossSalary).FormatCurrency())
4

1 に答える 1

0

必要な形式を指定できます。

public static class DecimalExtensions
{
    public static string FormatCurrency(this decimal instance)
    {
        var format = new NumberFormatInfo
        {
            NumberGroupSeparator = ",",
            NumberDecimalDigits = 2,
            NumberDecimalSeparator = "."
        };
        return string.Format(format, "{0:N}", instance);
    }
}

または通貨で:

public static class DecimalExtensions
{
    public static string FormatCurrency(this decimal instance)
    {
        var format = new NumberFormatInfo
        {
            CurrencyGroupSeparator = ",",
            CurrencyDecimalDigits = 2,
            CurrencyDecimalSeparator = ".",
            CurrencySymbol = "R"
        };
        return string.Format(format, "{0:C}", instance);
    }
}

シンボルに関する限り&#160;、それは値が HTML でエンコードされているためであり、それが本来あるべき姿です。ブラウザで正しく表示されます。

于 2012-09-26T08:57:56.037 に答える