Я установил [DisplayFormat(DataFormatString = "{0:C}")] в моем поле Deductible, но формат отображения по-прежнему не применяется. Может ли кто-нибудь помочь. ТЮ
CSHTML.CS
public class Contact
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public DateTime HireDate { get; set; }
//public List<Phone> PhoneNumbers { get; set; }
//public
//Address Address { get; set; }
[DisplayFormat(DataFormatString = "{0:C}")]
public decimal Deductible { get; set; }
КШТМЛ:
@for (var i = 0; i < Model.Contacts.Count; i++)
<div class = "col-sm">
<label asp-for = "@Model.Contacts[i].Deductible" class = "control-label"> </label>
<input asp-for = "@Model.Contacts[i].Deductible class = " control-label" value = "@Model.Contacts[i].Deductible">
</div>
Ну, я как бы ожидал, что он будет отображаться как валюта с 2 десятичными знаками, то есть 232,44 доллара США.
Понял... Я изменил его на value = "@Model.Contacts[i].Deductible.ToString("0.00")" и он правильно возвращается в POST. Большое вам спасибо за вашу помощь !





[DisplayFormat] уважается, когда вы используете DisplayFor() и EditorFor
Пытаться:
@Html.DisplayFor(model => model.Contacts[i].Deductible)
ИЛИ
<input asp-for = "@Model.Contacts[i].Deductible class = " control-label" value = "@Model.Contacts[i].Deductible.ToString("C2")">
Результат:
Или
[DisplayFormat(DataFormatString = "{0:C}", ApplyFormatInEditMode = true)]
и использовать
@Html.EditorFor(model => model.Contacts[i].Deductible)
Обновлять Если вы используете
[DisplayFormat(DataFormatString = "{0:C}")]
и
@Html.EditorFor(model => model.Contacts[i].Deductible)
В посте вы получите:
Приведенный выше фрагмент кода отлично работает при отображении, но когда POST выполняется, возвращается "0". Но без .ToString("C2") POST правильно возвращает Model.Contacts[i].Deductible
@Mark C Ваш пост вернулся $232.44? Но ваш тип франшизы decimal. Так что это будет 0. DisplayFormat только изменяет отображение, а не тип.
Настройка ввода как
<input name = "Contacts[@i].Deductible" class = "control-label" type = "text" value = "@Model.Contacts[i].Deductible.ToString(" 0.00")">
позволит отображать значение как 2-значное значение и может POST обратно как 2-значное значение
Если вам не нужно $, это нормально.
Мое обновление - это еще один способ POST обратно в виде 2-значного значения, вы можете посмотреть.
Как вы ожидаете, как будет выглядеть ваша франшиза? Вы хотите отобразить его без десятичных знаков? Хотите увидеть 232 и 114?