BKahuna
BKahuna

Reputation: 213

Using Razor view engine - how do I format a decimal value to have commas and two decimal places?

As the title suggests - I have a value in my viewmodel that is decimal. I have no control over that. I'd like to display it as currency using the Razor View Engine.

[email protected]("{0:0.00}", 1005.3422)

gets me part way there with:

$1005.34

but how can I get the commas in there?

Thanks

Upvotes: 21

Views: 62254

Answers (5)

user2073002
user2073002

Reputation: 21

Or you can add at class definition

[DisplayFormat(DataFormatString = "{0:#,##0.00}")]

Upvotes: 1

Steve
Steve

Reputation: 69

$ @String.Format("{0:#,##0.00}", 1005.3422)

Upvotes: 5

Nathan Snow
Nathan Snow

Reputation: 534

Ideally you'd be fetching the view data from some model e.g. public decimal ItemPrice { get; set; }

In which case the Razor expression in your view could be @Model.ItemPrice.ToString("c")

The same can be used for simple ViewBag items, e.g. @ViewBag.ItemPrice.ToString("c")

Upvotes: 3

Sebastien F.
Sebastien F.

Reputation: 1729

Most of the time, when you don't get the character you're expecting with strings conversion, it can be a locale issue. For exemple, you're developing with a en-us locale, but someone comes with a fr-FR locale. Then the date, currency, etc will be formatted and parsed differently.

Upvotes: 3

Sumo
Sumo

Reputation: 4112

Can you use {0:c} instead? This is just standard string formatting in .NET and the "c" is for currency. There are lots of standard numeric string formats. And, of course, custom formatting, too.

Upvotes: 31

Related Questions