Как можно ограничить до 2 десятичных знаков в TextBoxFor в MVC?

Я хочу после десятичной точки только 2 цифры.

@Html.TextBoxFor(m => m.Viewers, new { @tabindex = 7 })

Нужен вывод как это:

56,23

456,20

1,21

как это..

5 ответов

Решение

Я бы использовал шаблоны редактора в моих представлениях. Я бы определил модели представлений, которые специально адаптированы к требованиям данного представления (в данном случае ограничив его двумя десятичными знаками):

[DisplayFormat(DataFormatString = "{0:n2}", ApplyFormatInEditMode = true)]
public decimal Viewers{ get; set; }

или Вы можете просто использовать регулярное выражение с моделью, как

[RegularExpression(@"^\d+.\d{0,2}$]
public decimal Viewers{ get; set; }

а потом:

@Html.EditorFor(m => m.Viewers) 

или же TextBoxFor()также будет работать с регулярным выражением

@Html.TextBoxFor(m => m.Viewers, new { @tabindex = 7 })

Ввиду

@Html.TextBoxFor(m => m.Viewers, new { @tabindex = 7 }, new { Value=String.Format("{0:0.##}",Model.Viewers) })

В контроллере также вы можете отформатировать ваш String.Format("{0:0.##}",Object.viewers)

Модель Object- Means (содержит поле Viewers), которая передается в View

Надеюсь, это полезно

Я предлагаю вам отформатировать ваши десятичные числа на стороне клиента следующим образом:

В вашем ViewModel:

[DisplayFormat(DataFormatString = "{0:n2}", ApplyFormatInEditMode = true)]
public decimal Viewers { get; set; }

И по вашему мнению использовать EditorFor:

 @Html.EditorFor(m => m.Viewers, new { @tabindex = 7 })

Когда это значение отправляется на ваш Controller просто обрежьте его до 2 чисел.

Если вам нужна проверка, используйте Regex:

[RegularExpression(@"^\d+\.\d{0,2}$")] //this line
[DisplayFormat(DataFormatString = "{0:n2}", ApplyFormatInEditMode = true)]
public decimal Viewers { get; set; }

Если я использую.

String.Format("{0:0.00}", 123.4567);     

Итак, результат:

 // "123.46"

Так что вы можете попробовать это

@Html.TextBoxFor(m => String.Format("{0:0.00}", m.Viewers) , new { @tabindex = 7 })

  $("#Viewers").change(function (e) {

            var num = parseFloat($(this).val());
            $(this).val(num.toFixed(2));
});
   @Html.TextBoxFor(m => m.Viewers, new { @tabindex = 7 })

Спасибо за все, чтобы ответить мне!!!:)

Другие вопросы по тегам