Я надеюсь, что это довольно просто, хотя после многих поисков Google я не смог разобраться.
Я работаю над сайтом корзины покупок с MVC 3 и использую Entity Framework с первым кодом. Модель, которую я отправляю, представляет собой список объектов Product, и каждый из этих объектов включает это свойство:
[Required(ErrorMessage = "This is a required field.")]
[DataType(DataType.Currency)]
[Range(1.00, 500.00, ErrorMessage = "Products can not be free.")]
[DisplayFormat(DataFormatString = "{0:C}")]
[DisplayName("Price")]
public double Price { get; set; }
Я надеялся, что атрибут DisplayFormat приведет к тому, что следующая строка в представлении отформатирует значение как валюту (элемент является объектом продукта в цикле):
@Html.DisplayFor(modelItem => item.Price)
Но это не относится к форматированию вообще. Пока что единственный способ заставить его работать - использовать это вместо:
@String.Format("{0:C}", item.Price)
Но если это возможно, я бы лучше использовал @ Html.DisplayFor, поскольку он предназначен для обработки таких вещей, как нули. Я знаю, что это будет 0 или больше. На самом деле с проверкой это всегда будет какая-то сумма, но я хочу убедиться, что нет более правильного способа сделать это, прежде чем я продолжу.
Любая информация по этому вопросу будет принята с благодарностью!
UPDATE
Дарин ответил и указал, что это работает, что заставило меня вернуться к тому, что я фактически отправлял на вид. Я понял, что хотя у меня есть класс с именем ProductModel, который имеет атрибут DisplayFormat, на самом деле я возвращал другую модель, которая содержит список продуктов. Это называется ProductListModel, и я понял, что он возвращает список класса данных Product, а не класса ProductModel!
Так что, в конце концов, все было очень просто. Просто жаль, что я не потратил впустую половину вечера на это. Спасибо, что вдохновили меня вернуться и проверить, Дарин!