Как ограничить до 2 знаков после запятой в TextBoxFor в MVC?

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

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

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

56.23

456.20

1.21

как это..


person lashja    schedule 18.11.2016    source источник
comment
приемлемо ли решение Jquery?   -  person Rajshekar Reddy    schedule 18.11.2016
comment
Вы пробовали string.Format?   -  person    schedule 18.11.2016
comment
@ Редди. Я, конечно. Это.   -  person lashja    schedule 18.11.2016
comment
@AbhilashJA посмотрите, поможет ли этот поток stackoverflow.com/questions/23221557/   -  person Rajshekar Reddy    schedule 18.11.2016


Ответы (5)


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

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

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

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

а затем в html:

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

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

@Html.TextBoxFor(m => m.Viewers, new { @tabindex = 7 })
person MANISH KUMAR CHOUDHARY    schedule 18.11.2016

Ввиду

@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

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

person J-Mean    schedule 18.11.2016

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

В вашем ViewModel:

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

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

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

Когда это значение появится в вашем Controller, просто уменьшите его до двух цифр.

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

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

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

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

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

 // "123.46"

Итак, вы можете попробовать это

@Html.TextBoxFor(m => String.Format("{0:0.00}", m.Viewers) , new { @tabindex = 7 })
person Community    schedule 18.11.2016
comment
Ошибка HTTP 404.0 - Not Found Ресурс, который вы ищете, был удален, его имя было изменено или он временно недоступен. - получил такую ​​ошибку. - person lashja; 18.11.2016
comment
попробуйте перестроить это не ошибка HTML-кода, пожалуйста, проверьте справку по этой ошибке здесь. support.microsoft.com/en-us/kb/942041 - person ; 18.11.2016

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

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

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

person lashja    schedule 18.11.2016