【问题标题】:FormatException on Html.DisplayFor for decimal valuesHtml.DisplayFor 上的 FormatException 用于十进制值
【发布时间】:2017-10-14 13:35:18
【问题描述】:

我的模型有一个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,字符串 htmlFieldName,字符串 templateName,对象附加视图数据) Microsoft.AspNetCore.Mvc.Rendering.HtmlHelperDisplayExtensions.DisplayFor(IHtmlHelper htmlHelper, Expression> 表达式) Bordao.cshtml 中的 AspNetCore._Views_Dashboard_Bordao_cshtml+d__30.MoveNext() + @Html.DisplayFor(item => item.Entries[i].Spread)

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

如何让我的视图以 6 位小数格式化十进制值。 谢谢

【问题讨论】:

  • 但是,根据截图,错误似乎来自Spread属性
  • 您的代码应该可以正常工作,而您应用于InitialBalance 属性的格式没有任何问题。你确定这是问题的原因吗?看截图,它是一个不同的属性!也不要发布代码图像,将代码本身的相关部分发布到问题中。
  • 抱歉图片发布。 Spread 属性的配置方式相同。
  • 已编辑以更改代码图像
  • 必须是[DisplayFormat(DataFormatString = "{0:N6}")]

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


【解决方案1】:

仍然不知道为什么 N6 不工作。让它使用 6 位小数使用

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 2014-03-31
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多