有没有办法自定义Html.EditorFor生成的HTML?

时间:2014-07-01 20:02:21

标签: c# asp.net-mvc razor asp.net-mvc-5

当我使用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时,我也必须更改所有的editortemplates。

所以我正在寻找标准代码中的一种“钩子”,我可以说:我想要@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">

1 个答案:

答案 0 :(得分:2)

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

检查此链接What is the proper data annotation to format my decimal property?

[DisplayFormat(DataFormatString="{0:#.####}")]
  

请参阅格式的自定义格式字符串和示例的DisplayFormatAttribute