asp.net-mvc – MVC3在编辑时,十进制截断为2位小数

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – MVC3在编辑时,十进制截断为2位小数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Razor运行MVC3,并注意到在编辑模式时,十进制值被截断为2位小数。我已经设法通过使用显示格式注释我的属性来绕过它。这似乎不是一个很好的解决方案,因为我必须记住为每个生成的新视图(或更新我的模板)这样做。

我检查了我们的服务返回给控制器的值,它在1.144是正确的,但是当绑定到视图它出来作为1.14在TextBox

viewmodel属性

[required]
[Display(Name = "Unit Price")]
public decimal UnitPrice { get; set; }

.csHTML代码

@Html.LabelFor(model => model.UnitPrice) 
@Html.EditorFor(model => model.UnitPrice) 
@Html.ValidationMessageFor(model => model.UnitPrice)

如果我用以下方式来装饰房产,那么它是有效的。

[DisplayFormat(
               ApplyFormatInEditMode = true,DataFormatString = "{0:0.00###########################}",NullDisplayText = "")]

有任何想法吗?

解决方法

这就是默认的 Decimal editor template is defined
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<script runat="server">
    private object ModelValue {
        get {
            if (ViewData.TemplateInfo.FormattedModelValue == ViewData.ModelMetadata.Model) {
                return String.Format(
                    System.Globalization.CultureInfo.CurrentCulture,"{0:0.00}",ViewData.ModelMetadata.Model
                );
            }
            return ViewData.TemplateInfo.FormattedModelValue;
        }
    }
</script>
<%= Html.TextBox("",ModelValue,new { @class = "text-Box single-line" }) %>

注意{0:0.00}格式。

所以你有两种可能性:

>在模型中使用double而不是decimal作为类型
>通过创建自定义〜/ Views / Shared / EditorTemplates / Decimal.cshtml来修改默认编辑器模板,这可能只是这样:

@Html.TextBox(
    "",ViewData.TemplateInfo.FormattedModelValue,new { @class = "text-Box single-line" }
)

您可能还需要修改显示模板。

猜你在找的asp.Net相关文章