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" }
)

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

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...