EditorFor和ApplyFormatInEditMode

时间:2018-08-16 16:17:31

标签: c# asp.net-mvc razor data-annotations editorfor

我正在使用MVC 5,但在格式化十进制数字时遇到问题

我的模型中有一个精度为18,5的小数,我想显示它以便用EditorFor进行编辑,但是即使DataFormatString是{{1 }}

ApplyFormatInEditMode

以数字true为例

如果我将其渲染为:

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

我如何使用它?

谢谢!

1 个答案:

答案 0 :(得分:1)

使用内置默认模板时,@Html.EditorFor(x => x.Example)的结果为4,而不是4.00000,因此,我只能假定您必须为typeof EditorTemplate定义一个自定义decimal? (请检查EditorTemplates/Views/Shared文件夹中的Views/YourControllerName文件夹,查找名为Decimal.cshtml的文件)。

使用TextBoxFor()时看到的结果是正确的。仅在使用[DisplatFormat]DisplayFor()时才使用EditorFor()属性。要使用TextBoxFor()格式化值,您需要使用接受格式字符串的重载

@Html.TextBoxFor(m => m.Example, "{0:#.#####}") // result: 4