Asp.net-Mvc

DisplayFormat 未應用於十進制值

  • October 12, 2013

我有一個模型屬性,我正在嘗試使用 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

這看起來很簡單,但它不起作用,我不知道為什麼。

更新: 只是為了好玩,我用 DisplayFor 模板嘗試了它,它起作用了:

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

那麼,當我設置ApplyFormatInEditMode為 true 時,為什麼 DisplayFor 模板可以工作,而不是 EditorFor 模板?

更新 2: 沒關係,有效的原因是因為我的十進制顯示模板被硬編碼為這種格式。所以我的顯示模板也不起作用。

Darin Dimitrov 發布了這個答案,我能夠使用他的解決方案讓它工作:

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

有點粗魯,IMO,這對 w/ 不起作用TextBoxFor,但至少它起作用。

試試這種格式,它輸出 18.999,00

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:N}")]

引用自:https://stackoverflow.com/questions/7843099