ASP.NET Core Razor视图中如何格式化数字?
解决数字格式化问题的可行方案
你之前尝试的格式化代码无效,大概率是AccRaseed的类型不是数值类型(比如是字符串),或者当前线程区域设置不支持千分位格式,以下是几种直接有效的解决办法:
1. 类型转换后格式化(针对字符串类型的数字)
如果AccRaseed是字符串存储的数字,先转换为数值类型再格式化,同时兼容转换失败的场景:
<td> @(decimal.TryParse(item.AccRaseed, out var num) ? num.ToString("N") : item.AccRaseed) </td>
2. 模型添加特性实现自动格式化(推荐)
在模型类的AccRaseed属性上标注DisplayFormat特性,后续使用Html.DisplayFor就能自动输出千分位格式,代码更整洁:
public class YourModel { public string AccName { get; set; } [DisplayFormat(DataFormatString = "{0:N}", ApplyFormatInEditMode = false)] public decimal AccRaseed { get; set; } // 确保属性类型为decimal/double等数值类型 }
视图保持原有代码即可:
<td> @Html.DisplayFor(modelItem => item.AccRaseed) </td>
3. 强制指定区域文化格式化
如果是区域设置导致的格式不生效,强制使用支持千分位的文化(如en-US):
<td> @item.AccRaseed.ToString("N", System.Globalization.CultureInfo.GetCultureInfo("en-US")) </td>
4. 直接输出格式化字符串(替代DisplayFor)
放弃Html.DisplayFor,直接输出格式化后的内容(前提是AccRaseed为数值类型):
<td> @string.Format("{0:N}", item.AccRaseed) </td>
内容的提问来源于stack exchange,提问作者M.J
相关产品推荐
相关产品推荐

