ASP.NET MVC Core:如何将模型外数值渲染为货币类型(不使用ToString("C"))
嘿,我刚好知道怎么解决这个问题!不用手动调用.ToString("C")的话,咱们可以利用ASP.NET MVC的内置渲染机制来处理,有两种实用的方法:
方法1:用内置的"Currency"显示模板
ASP.NET MVC自带了预定义的显示模板,其中"Currency"模板会自动根据当前区域设置把decimal值渲染成货币格式,直接用@Html.DisplayFor指定模板名称就行:
@{ var vals = Model.CreateValues(); } @for (var i = 0; i < vals.Count ; i++) { Year @i: @Html.DisplayFor(_ => vals[i], "Currency") }
这样渲染出来的结果会自动适配当前文化(比如英文环境显示$,中文环境显示¥),完全不用自己写格式化字符串。
方法2:匿名类型+数据注解(支持自定义格式)
如果需要更灵活的格式控制(比如指定小数位数、调整符号显示),可以把值包装进带格式化规则的匿名类型,让渲染引擎自动应用规则:
@{ var vals = Model.CreateValues(); } @for (var i = 0; i < vals.Count ; i++) { var currencyItem = new { Amount = vals[i] }; Year @i: @Html.DisplayFor(m => currencyItem.Amount, "{0:C2}") // 要是想保留1位小数,就改成"{0:C1}",按需调整就行 }
这种方式本质上是让DisplayFor帮你处理格式化逻辑,同样不需要手动调用.ToString("C")。
内容的提问来源于stack exchange,提问作者Daniel Santos
相关产品推荐
相关产品推荐

