如何将十进制字段值转换为mvc中的货币

时间:2015-02-02 12:31:03

标签: asp.net-mvc asp.net-mvc-3 mvc-editor-templates editortemplates

我的观点中有一些编辑器,如下面的

@Html.EditorFor(Model => Model.CashBalance)

现在,当我在该编辑器中输入任何值时,该值应更改为文本框更改事件中的货币值

对于前: 123应显示为123.00 14.35应显示为14.35

我想以通用方式执行此操作,以便我不需要在每个位置更改它,因为我的项目有许多编辑器,它接收来自用户的输入。

由于我正在为所有这些文本框使用EditorTemplate,我想在这里处理。

我的EditorTemplate为decimal.cshtml,它看起来像foll

@model decimal?
@{
    string value = (Model.HasValue == false || Model.Value == 0) ? "" : string.Format("{0:0.00}", Model.Value);
}

@Html.TextBox(
    "", 
    value,
    new { @class="amountRightAlign"}
)

我是否可以在此处编写任何textchange事件,以便它影响到哪里有十进制数据类型?

提前致谢?

1 个答案:

答案 0 :(得分:1)

Html助手是用于生成发送到客户端的html的服务器端代码。为了与浏览器中的用户更改进行交互,您需要使用javascript来处理事件。

在您的情况下,您不需要EditorTemplate。相反,只需接受格式字符串的TextBoxFor() @Html.TextBoxFor(m => m.CashBalance, "{0:0.00}", new { @class="decimalnumber" })

$('.decimalnumber').change(function () {
  var num = new Number($(this).val());
  if (isNaN(num)) {
    // Its not a valid number
    return;
  }
  $(this).val(num.toFixed(2));
})

然后在视图中,或在单独的脚本文件中

{{1}}