【问题标题】:ASP.NET MVC 4 save 3 decimal place value to SQL Server 2005ASP.NET MVC 4 将 3 个小数位值保存到 SQL Server 2005
【发布时间】:2013-04-19 07:34:08
【问题描述】:

我必须在 SQL Server 2005 中设置小数点后 3 位。我只能从模型部分设置它。但在 sql server 中,Salary 属性的数据类型为decimal

 When I set like

         public decimal Salary { get; set; }

它会像 21000.000 而不是 21000 一样保存到数据库中。如果我输入 30000.75,那么它将被保存到 30000.750。

【问题讨论】:

    标签: sql asp.net-mvc-4


    【解决方案1】:

    我也陷入了同样的境地,终于找到了解决办法。您可以覆盖 DbContext.OnModelCreating() 方法并配置精度

    公共类 ApplicationDbContext : IdentityDbContext { 受保护的覆盖无效 OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity().Property(c => c.AssociationFee).HasPrecision(18, 3); } }

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      将此属性应用于模型中的属性:

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

      【讨论】:

      • 它不能正常工作。在模型类中使用它。但是我在 sql 中使用的数据类型是什么。
      • 不确定您在问什么 - 例如,SQL Server 数据类型可能是 numeric(12,3)
      • 我无法从 sql side.only 模型部分设置它
      【解决方案3】:

      您可以使用 MVC DisplayFormat 属性:

      DisplayFormat not getting applied on decimal value

      或者出于显示目的,您可以使用字符串并执行以下操作:

      Salary.ToString("F");
      

      这将导致输出:30000.75

      或者:

      Salary.ToString("N");
      

      这将导致输出:30,000.75

      【讨论】:

        【解决方案4】:

        试试这个,你也必须设置为编辑模式。

         [DisplayFormat(DataFormatString = "{0:n3}", ApplyFormatInEditMode = true)]
         public decimal Amount { get; set; }
        

        【讨论】:

        • 我输入13000.340,点击保存,到时候只会显示13000.000,我不要这样
        • 我认为如果你从 sql 端处理它会很容易。
        • 你应该改变你的变量类型十进制浮动在.Net端,它肯定会解决。
        • 我用那个,但是我没有权限用这个。
        • 改变你的模型 ..make float in model 。你可以这样做 。如果你在 sql 中没有权限。
        猜你喜欢
        • 1970-01-01
        • 2014-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-10
        • 1970-01-01
        • 2010-10-13
        相关资源
        最近更新 更多