问题
I have a model property I'm trying to render using an EditorFor template, and I'm trying to apply formatting using the DisplayFormat attribute. However, it's not working at all -- it's totally being ignored.
Here is my template:
@model System.Decimal?
@Html.TextBoxFor(m => m)
Here is my model:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:0.00}")]
public decimal? Retail { get; set; }
Here is my view:
@Html.EditorFor(m => m.Retail)
But it's rendering a textbox with the following value:
189.9900
It seems pretty straight forward, but it's not working, and I have no idea why.
UPDATE: Just for kicks, I tried it with a DisplayFor template, and it worked:
@Html.DisplayFor(m => m.Retail)
So why would the DisplayFor template work, but not the EditorFor template, when I've set ApplyFormatInEditMode
to true?
UPDATE 2: Never mind, the reason that worked is because my Decimal display template was hard-coded to format that way. So my display template also does not work.
回答1:
Darin Dimitrov posted this answer, and I was able to get it working using his solution:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue)
A bit crude, IMO, that this doesn't work w/ TextBoxFor
, but at least it works.
回答2:
DisplayFormat
won't work like that; if you manually create a text box for the property it doesn't come into play. It would only work if you did
@model System.Decimal?
@Html.DisplayFor(m => m)
回答3:
Try with this format, it outputs 18.999,00
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:N}")]
来源:https://stackoverflow.com/questions/7843099/displayformat-not-getting-applied-on-decimal-value