无法将货币格式的文本框转换为十进制模型(MVC)

时间:2013-08-13 21:33:10

标签: asp.net-mvc-4 razor model-binding

在我的应用程序中,我有一个文本框,其中javascript将值转换为货币格式。这是强制性的,不可协商的。

即。 5.50变为5.50美元,-5.50变为(5.50美元)

当我尝试保存时,我收到验证错误,因为$ 5.50对ViewModel无效

//View file
 @Html.CustomEditorFor(m => m.CurrentTotal, "currency")

//Controller file. First thing in the controller method called
if (ModelState.IsValid)
{
//... not getting to this
}

//ViewModel file
[Display(Name = "Current Total:")]
public decimal CurrentTotal
{
  get
  {
    return PropertyDictionary.GetDecimal("CurrentTotal", 0).Value;
  }
  set
  {
    PropertyDictionary.SetDecimal("CurrentTotal", value);
  }
}

我想知道如何删除非数字,不包括“。”在它进入模型之前从文本框中导致ModelState无效。

我再次继承了这个应用程序并且正在学习,所以我很感激时间和耐心!

2 个答案:

答案 0 :(得分:2)

之类的电话怎么样?
double.Parse(currencyValue, NumberStyles.Currency);

正如related link中所述。查看NumberStyles了解更多选项。

答案 1 :(得分:0)

我仍然不知道如何在MVC中执行此操作(虽然看起来我应该使用自定义模型绑定器)我已经解决了这个问题。

 $(document).submit(function () {
        $("input[type=text].currency").each
        (
            function () {
                $(this).val($(this).val().toString().replace('(', '-').replace("$", '').replace(")", ''));
            }
        );
    });

希望这有助于将来。