【问题标题】:Is there a way to customize the HTML generated by the Html.EditorFor?有没有办法自定义由 Html.EditorFor 生成的 HTML?
【发布时间】:2014-08-22 11:50:02
【问题描述】:

当我使用 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 位小数。

有没有办法做到这一点?

(所以我想要生成的是: &lt;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"&gt;

【问题讨论】:

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


    【解决方案1】:

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

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

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

    有关格式,请参阅自定义格式字符串,有关示例,请参阅 DisplayFormatAttribute

    【讨论】:

    • 太震撼了!是否还有可能从资源或常量中读取格式字符串(以确保我的 viemodel 中的所有 datformatstrings 都相同)?
    • 哦,这个问题已经在这里回答了stackoverflow.com/questions/13576571/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2019-11-28
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多