DisplayFormat не применяется к десятичному значению - PullRequest
8 голосов
/ 21 октября 2011

У меня есть свойство модели, которое я пытаюсь отобразить с помощью шаблона EditorFor, и я пытаюсь применить форматирование с помощью атрибута DisplayFormat. Тем не менее, он вообще не работает - его полностью игнорируют.

Вот мой шаблон:

@model System.Decimal?
@Html.TextBoxFor(m => m)

Вот моя модель:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:0.00}")]
public decimal? Retail { get; set; }

Вот мой взгляд:

@Html.EditorFor(m => m.Retail)

Но он отображает текстовое поле со следующим значением:

189,9900

Это кажется довольно простым, но это не работает, и я понятия не имею, почему.

UPDATE: Просто для удовольствия, я попробовал это с шаблоном DisplayFor, и он работал:

@Html.DisplayFor(m => m.Retail)

Так почему же будет работать шаблон DisplayFor, а не шаблон EditorFor, если для ApplyFormatInEditMode установлено значение true?

ОБНОВЛЕНИЕ 2: Не берите в голову, причина, по которой это сработало, заключается в том, что мой шаблон отображения десятичного числа был жестко запрограммирован таким образом. Так что мой шаблон отображения тоже не работает.

Ответы [ 3 ]

3 голосов
/ 21 октября 2011

Дарин Димитров опубликовал этот ответ , и я смог заставить его работать, используя его решение:

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue)

Немного грубо, ИМО, что это не работает с TextBoxFor, но, по крайней мере, работает.

2 голосов
/ 21 октября 2011

Попробуйте с этим форматом, он выводит 18,999,00

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:N}")]
2 голосов
/ 21 октября 2011

DisplayFormat так работать не будет; если вы вручную создаете текстовое поле для свойства, оно не вступает в игру. Это будет работать только если вы сделали

@model System.Decimal?
@Html.DisplayFor(m => m)
...