Reputation: 509
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?
Upvotes: 10
Views: 13254
Reputation: 4866
Another option is the [DataType]
attribute.
Add DataAnnotations using System.ComponentModel.DataAnnotations;
and using System.ComponentModel.DataAnnotations.Schema
then you can do something like this in the model.
[DataType(DataType.Currency)]
[Column(TypeName = "decimal(18, 2)")]
public decimal MonthlyMortgage{ get; set; }
Upvotes: 0
Reputation: 273179
@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
Upvotes: 11
Reputation: 139748
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.
Upvotes: 21