Asp.net mvc DisplayFormat未应用于十进制值
我有一个模型属性,我正在尝试使用EditorFor模板渲染,并且我正在尝试使用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
@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中无效