Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

String Formatting with currency double values not displaying correctly.

Tags:

c#

asp.net-mvc

I'm using MVC3 with a detailed view that needs to display a formatted dollar amounts like $1,200.00. The controller is passing in a double value in this case for MonthlyMortgage to the view. The line of code below however, does not display the correct string formatting. What is displayed is $1200.00, and what I need is $1,200.00.

I have tried:

[email protected]("{0:c}", Html.DisplayFor(model => model.MonthlyMortgage))

and I have tried this:

[email protected]("{0:#,###,###,##0.000}", Html.DisplayFor(model => model.MonthlyMortgage))

Can someone please enplane why this is not working?

like image 492
Shawn Avatar asked Jun 24 '12 08:06

Shawn


2 Answers

@nemesv has a direct answer. The other option would be to remove String.Format() from the View and use DataAnnotations to attach a formatting to MonthlyMortgage.

An example from MSDN:

[DisplayFormat(DataFormatString = "{0:C}")]
public Decimal ListPrice { get; set; }

And btw, #,###,###,##0.000 can be shortened to #,##0.00

like image 149
Henk Holterman Avatar answered Oct 14 '22 10:10

Henk Holterman


You don't need to use Html.DisplayFor because it will return MvcHtmlString so the string.Format doesn't apply.

Just use the string.Format on your model:

@String.Format("{0:c}", Model.MonthlyMortgage)

Note you don't need the '$' sign anymore because the {0:c} will take care of it.

like image 20
nemesv Avatar answered Oct 14 '22 08:10

nemesv