是否有一种方法可以自定义HTML . editorfor生成的HTML ?

本文关键字:HTML editorfor 自定义 方法 一种 是否 | 更新日期: 2023-09-27 18:11:13

当我使用Html.EditorFor方法时,像这样在mvc5:

@Html.EditorFor(model => model.RateHigh, new { htmlAttributes = new { @class = "form-control" } })

我得到了这样漂亮的HTML:

<input class="form-control text-box single-line" data-val="true" data-val-number="The field tarief verbruik must be a number." data-val-required="'tarief verbruik' is een verplicht veld" id="RateNormal" name="RateNormal" type="text" value="0,15">

现在我想显示4位小数的值,我发现这样做的唯一方法是创建一个editor template,这是正确的吗?

现在我的问题是:我是否必须在编辑器模板中键入所有验证属性和额外的类名(因为我从头开始)?

这看起来有点不合逻辑,因为当asp.net mvc团队决定生成不同的html时,我也必须更改所有的编辑器模板。

所以我在标准代码中寻找的是一种"钩子",我可以说:我想要@Html.EditorFor的所有html,然后以4位小数格式化值。

有办法做到这一点吗?

(所以我想生成的是这样的:<input class="form-control text-box single-line" data-val="true" data-val-number="The field tarief verbruik must be a number." data-val-required="'tarief verbruik' is een verplicht veld" id="RateNormal" name="RateNormal" type="text" value="0,1500">

是否有一种方法可以自定义HTML . editorfor生成的HTML ?

您可以在模型中使用数据注释定义它。

什么是正确的数据注释来格式化我的十进制属性?
[DisplayFormat(DataFormatString="{0:#.####}")]

参见自定义格式字符串的格式和DisplayFormatAttribute的例子