EditorFor 和 ApplyFormatInEditMode

EditorFor and ApplyFormatInEditMode

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

我的模型中有一个精度为 18.5 的小数,我想显示它以便使用 EditorFor 进行编辑,但它忽略了 DataFormatString,即使 ApplyFormatInEditModetrue

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

以数字4为例

如果我将其渲染为:

@Html.DisplayFor(x => x.Example) //result: 4 (this is what i want!)
@Html.TextBoxFor(x => x.Example) //result: 4.00000
@Html.EditorFor(x => x.Example) //result: 4.00000

我该如何使用它?

谢谢!

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

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

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