Asp.net mvc DisplayFormat未应用于十进制值

Asp.net mvc DisplayFormat未应用于十进制值,asp.net-mvc,asp.net-mvc-3,decimal,mvc-editor-templates,displayformat,Asp.net Mvc,Asp.net Mvc 3,Decimal,Mvc Editor Templates,Displayformat,我有一个模型属性,我正在尝试使用EditorFor模板渲染,并且我正在尝试使用DisplayFormat属性应用格式。然而,它根本不起作用——它完全被忽视了 这是我的模板: @model System.Decimal? @Html.TextBoxFor(m => m) 这是我的模型: [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:0.00}")] public decimal? Retail { g

我有一个模型属性,我正在尝试使用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 template有效,而EditorFor template无效呢

更新2:
没关系,之所以有效是因为我的十进制显示模板被硬编码成那样的格式。因此,我的显示模板也不能工作。

DisplayFormat
不能像那样工作;如果手动为属性创建文本框,则该文本框不会起作用。只有你这样做了,它才会起作用

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

尝试此格式,它输出18.999,00

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:N}")]
Darin Dimitrov发了帖子,我使用他的解决方案使它工作:

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

在我看来,这有点粗糙,它不适用于/
TextBoxFor
,但至少它可以工作。

那么它不适用于EditorFor吗?我认为这就是
ApplyFormatInEditMode
的要点?您是否尝试过在模板中使用
@Html.EditorForModel()
?是的,这只是完全删除了文本框。不,这对我仍然不起作用。它仍然呈现
1899.9900
。您必须使用默认的EditorFor模板,而我使用的是自定义模板。默认模板对我来说很好,但自定义模板不起作用,因为它们最终必须使用TextBoxFor。所以我上面的答案,以及我链接到的问题。正如@jer所说,它在EditorFor中有效,但在TextBoxFor中无效