Как преобразовать десятичное значение поля в валюту в mvc

На мой взгляд, у меня есть несколько редакторов, например, следующие

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

Теперь, когда я ввожу любое значение в этот редактор, значение должно измениться на значение валюты в событии изменения текстового поля.

Например: 123 должно отображаться как 123,00 14,35 должно отображаться как 14,35.

Я хочу сделать это в общем виде, чтобы мне не нужно было менять его везде, так как в моем проекте много редакторов, которые принимают данные от пользователя.

Поскольку я использую EditorTemplate для всех этих текстовых полей, я хочу обрабатывать здесь себя.

Мой EditorTemplate для этого - decimal.cshtml, и он выглядит следующим образом

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

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

Будет ли какое-либо событие изменения текста, которое я могу написать здесь, чтобы оно влияло на то, где когда-либо есть десятичный тип данных?

Заранее спасибо?


person Santosh    schedule 02.02.2015    source источник
comment
Вам нужно использовать javascript/jquery и обработать событие .change(). Это не имеет ничего общего с использованием EditorTemplate. И это просто должно быть @Html.TextBoxFor(m => m, "{0:0.00}", new { @class="amountRightAlign"})   -  person    schedule 02.02.2015


Ответы (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));
})
person Community    schedule 03.02.2015