如何让@Html.TextBoxFor()不使用科学计数法显示数字?
解决@Html.TextBoxFor()渲染double类型显示科学计数法的问题
以下几种方案可以让你保留使用@Html.TextBoxFor()的同时,避免小数值显示为科学计数法:
给ViewModel属性添加格式化特性
在对应double类型的属性上标注DisplayFormat特性,指定格式字符串并开启编辑模式下的格式应用:public class YourViewModel { // N8表示保留8位小数,可根据需求调整位数(如N6、N10) [DisplayFormat(DataFormatString = "{0:N8}", ApplyFormatInEditMode = true)] public double SmallDecimalValue { get; set; } }之后视图中正常使用
@Html.TextBoxFor(m => m.SmallDecimalValue)即可按指定格式渲染数值。在TextBoxFor调用时直接指定格式
无需修改ViewModel,直接在视图层调用TextBoxFor的重载方法,传入格式字符串:<!-- 这里N8为保留8位小数,可按需调整 --> @Html.TextBoxFor(m => m.SmallDecimalValue, "{0:N8}", new { @class = "form-control" })这种方式适合需要针对单个输入框单独设置格式的场景。
全局统一设置double类型的显示模板(适合大量属性的场景)
在项目的~/Views/Shared/EditorTemplates目录下创建Double.cshtml文件,内容如下:@model double? @Html.TextBox("", Model.HasValue ? Model.Value.ToString("N8") : "", ViewData)之后所有使用
@Html.TextBoxFor()绑定double类型的输入框,都会自动应用这个模板的格式规则,一次性解决大量属性的显示问题。
内容的提问来源于stack exchange,提问作者Valery
相关产品推荐
相关产品推荐

