Html.DisplayFor上的FormatException用于十进制值

时间:2017-10-14 13:35:19

标签: asp.net-mvc razor asp.net-core-mvc

我的模型设置了DisplayFormat,如下图所示

[BsonElement("spread")]
[BsonRepresentation(BsonType.Decimal128,AllowTruncation =true)]
[DisplayFormat(DataFormatString = "{N6}")]
public decimal Spread { get; set; }

在我看来,我有以下代码:

<tbody>
    @for (int i = 0; i < Model.Entries.Count; i++)
    {
        <tr>
            <td>
                @Html.DisplayFor(item => item.Entries[i].Spread)
            </td>

但是,当页面加载时,我收到错误:

  

FormatException:输入字符串的格式不正确。       System.Text.StringBuilder.FormatError()       System.Text.StringBuilder.AppendFormatHelper(IFormatProvider提供程序,字符串格式,ParamsArray args)       string.FormatHelper(IFormatProvider提供程序,字符串格式,ParamsArray args)       Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.TemplateBuilder.Build()       Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.GenerateDisplay(ModelExplorer modelExplorer,string htmlFieldName,string templateName,object additionalViewData)       Microsoft.AspNetCore.Mvc.Rendering.HtmlHelperDisplayExtensions.DisplayFor(IHtmlHelper htmlHelper,Expression&gt; expression)       Bordao.cshtml中的AspNetCore._Views_Dashboard_Bordao_cshtml + d__30.MoveNext()       +                           @ Html.DisplayFor(item =&gt; item.Entries [i] .Spread)

我尝试将formatString更改为"0.000""N6" ..仍然没有成功.. 如果在视图代码之外我运行string.format(spread, "N6"),我会得到正确的结果。

如何让我的视图将小数值格式化为6位小数。 感谢

1 个答案:

答案 0 :(得分:0)

仍然不知道为什么N6不起作用。使用

使用6位小数
[DisplayFormat(DataFormatString = "{0:0.#######}")] 

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