这是我在View模型中的字段:
public decimal MyValue { get; set; }
以下是我在视图中显示值的方法:
@Html.EditorFor(model => model.MyValue)
我从DB一直调试并关闭了所有JS。我仍然在View中获得该模型的值为12.34345,但呈现给用户的最终值为12.34。
This问题是如何解决这个问题,但为什么不清楚。
有趣的是,当我使用时:
@Html.HiddenFor(model => model.MyValue)
四舍五入没有发生。
答案 0 :(得分:1)
它是EditorTemplate
的默认decimal
的函数。形成source code(请注意格式为"{0:0.00}"
)
internal static string DecimalTemplate(HtmlHelper html)
{
if (html.ViewContext.ViewData.TemplateInfo.FormattedModelValue == html.ViewContext.ViewData.ModelMetadata.Model)
{
html.ViewContext.ViewData.TemplateInfo.FormattedModelValue = String.Format(CultureInfo.CurrentCulture, "{0:0.00}", html.ViewContext.ViewData.ModelMetadata.Model);
}
return StringTemplate(html);
}
如果您希望将小数位显示为已保存,请使用@Html.TextBoxFor(m => m.MyValue)
,或者您可以使用DisplayFormatAttribute
应用您自己的格式,EditorFor()
方法会尊重该格式,示例
[DisplayFormat(DataFormatString = "{0:0.00000}", ApplyFormatInEditMode = true)]`
public decimal MyValue { get; set; }
答案 1 :(得分:0)
见下面的方法
public static IHtmlContent DecimalTemplate(IHtmlHelper htmlHelper)
{
if (htmlHelper.ViewData.TemplateInfo.FormattedModelValue == htmlHelper.ViewData.Model)
{
htmlHelper.ViewData.TemplateInfo.FormattedModelValue =
string.Format(CultureInfo.CurrentCulture, "{0:0.00}", htmlHelper.ViewData.Model);
}
return StringTemplate(htmlHelper);
}