60

私はこの行を持っています

@String.Format("{0:C}", @price)

私のかみそりのビューで。価格の前にドル記号を表示したいのですが、代わりにポンド記号を表示します。どうすればこれを達成できますか?

4

8 に答える 8

42

他の人が言ったように、IFormatProvider を介してこれを実現できます。ただし、通貨の書式設定は通貨記号をはるかに超えていることに注意してください。たとえば、米国での正しい形式の価格は "$ 12.50" ですが、フランスでは "12.50 $" と表記されます (小数点と通貨記号の位置が異なります)。通貨記号を変更するためだけに、このカルチャに適した書式設定を失いたくありません。良いニュースは、次のコードが示すように、その必要がないことです。

var cultureInfo = Thread.CurrentThread.CurrentCulture;   // You can also hardcode the culture, e.g. var cultureInfo = new CultureInfo("fr-FR"), but then you lose culture-specific formatting such as decimal point (. or ,) or the position of the currency symbol (before or after)
var numberFormatInfo = (NumberFormatInfo)cultureInfo.NumberFormat.Clone();
numberFormatInfo.CurrencySymbol = "€"; // Replace with "$" or "£" or whatever you need

var price = 12.3m;
var formattedPrice = price.ToString("C", numberFormatInfo); // Output: "€ 12.30" if the CurrentCulture is "en-US", "12,30 €" if the CurrentCulture is "fr-FR".
于 2012-05-03T09:36:09.560 に答える
30

IFormatProvider を提供する必要があります。

@String.Format(new CultureInfo("en-US"), "{0:C}", @price)
于 2012-05-02T15:13:53.867 に答える
12

個人的には、文化固有のコードを使用することに反対です。次のことをお勧めします。

@String.Format(CultureInfo.CurrentCulture, "{0:C}", @price)

そしてあなたのweb.configで次のことを行います:

<system.web>
    <globalization culture="en-GB" uiCulture="en-US" />
</system.web>

追加情報: https://msdn.microsoft.com/en-us/library/syy068tk(v=vs.90).aspx

于 2015-07-09T11:04:50.027 に答える
3

かみそりの場合は、文化、価値を使用できます

@String.Format(new CultureInfo("sv-SE"), @Model.value)
于 2012-09-25T09:19:52.470 に答える
1
decimal value = 0.00M;
value = Convert.ToDecimal(12345.12345);
Console.WriteLine(".ToString(\"C\") Formates With Currency $ Sign");
Console.WriteLine(value.ToString("C"));
//OutPut : $12345.12
Console.WriteLine(value.ToString("C1"));
//OutPut : $12345.1
Console.WriteLine(value.ToString("C2"));
//OutPut : $12345.12
Console.WriteLine(value.ToString("C3"));
//OutPut : $12345.123
Console.WriteLine(value.ToString("C4"));
//OutPut : $12345.1234
Console.WriteLine(value.ToString("C5"));
//OutPut : $12345.12345
Console.WriteLine(value.ToString("C6"));
//OutPut : $12345.123450
Console.WriteLine();
Console.WriteLine(".ToString(\"F\") Formates With out Currency Sign");
Console.WriteLine(value.ToString("F"));
//OutPut : 12345.12
Console.WriteLine(value.ToString("F1"));
//OutPut : 12345.1
Console.WriteLine(value.ToString("F2"));
//OutPut : 12345.12
Console.WriteLine(value.ToString("F3"));
//OutPut : 12345.123
Console.WriteLine(value.ToString("F4"));
//OutPut : 12345.1234
Console.WriteLine(value.ToString("F5"));
//OutPut : 12345.12345
Console.WriteLine(value.ToString("F6"));
//OutPut : 12345.123450
Console.Read();

出力コンソール画面:

于 2016-07-25T10:32:22.097 に答える