0

У меня есть несколько editorfor на мой взгляд, как следующийКак преобразовать десятичное значение поля в валюте в MVC

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

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

для Ex: 123 должен отображаться как 123,00 14,35 должно отображаться как 14,35

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

Поскольку я использую 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"} 
) 

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

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

+0

Вы должны использовать JavaScript/JQuery и обрабатывать '.Кнопкой () 'событие. Это не имеет никакого отношения к использованию 'EditorTemplate'. И это просто должно быть '@ Html.TextBoxFor (m => m," {0: 0.00} ", new {@ class =" amountRightAlign "})' –

ответ

1

Html helpers - код сервера, используемый для генерации html, который отправляется клиенту. Чтобы взаимодействовать с пользовательскими изменениями в браузере, вам нужно использовать javascript для обработки событий.

В вашем случае вам не нужен EditorTemplate. Вместо этого, просто overload из 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)); 
}) 
Смежные вопросы