使用其他本地时更新十进制数

时间:2011-06-03 16:12:18

标签: validation asp.net-mvc-3 localization

我有这个模型

public class SalesModelView
{
    [Key]
    public int SaleId { get; set; }
    public int ShopId { get; set; }
    public string ShopName { get; set; }

    [Display(Name = "Date")]
    public DateTime SaleDate { get; set; }

    [Required]
    [Display(Name = "Timer")]
    [Range(0, 24)]
    public int Hours { get; set; }
    [Required]
    [Display(Name = "Salg")]
    public Decimal Sales { get; set; }
    [Required]
    [Display(Name = "Behandlinger")]
    public Decimal Treatments { get; set; }

    [Display(Name = "Omsætning")]
    public Decimal Turnover { get; set; }
    [Display(Name = "Oms./Timer")]
    public Decimal TurnoverHour { get; set; }
    [Display(Name = "Effektivitet")]
    public Decimal Efficiency { get; set; }
}

在丹麦语语言环境中,小数通常显示为280.800,00,因此.为千位,,为小数位。

我的观点显示了正确的内容

enter image description here

但是当保存回我的模型时,我将.作为小数分隔符,将所有值传递给:

enter image description here

original image for better visualization

所以号码546.400会转换为546,4

我已经尝试没有运气来连接表单提交并将所有.替换为任何内容,例如

$("form").bind("submit", function() {
  $(".number").each(function(){
    var v = $(this).val(v).replace('.','');
    $(this).val(v);
  });
});
  

你们用什么技巧来做这类事情?

P.S。我确实阅读了Hanselman's article,但我仍然遇到了完全相同的问题,当我将其传递给出错的Controller时,问题就完全在View

1 个答案:

答案 0 :(得分:2)

在这些情况下,DefaultModelBinder无法正常工作。您可以自己编写或确保提交en-US值。这是一篇关于它的文章。

Model Binding Decimal Values