Как можно ограничить до 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 })
Спасибо за все, чтобы ответить мне!!!:)