Я надеюсь, что это довольно просто, хотя после многих проблем в Googling я не смог его обработать.
Я работаю над сайтом корзины покупок с 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, поскольку он предназначен для обработки таких вещей, как null. Я знаю, что это будет 0 или больше. На самом деле с проверкой всегда будет какая-то сумма, но я хочу убедиться, что раньше не было правильного способа сделать это, прежде чем я продолжу.
Любая информация об этом будет оценена наиболее высоко!
UPDATE
Дарин ответил и указал, что он работает, что заставило меня вернуться к тому, что я действительно отправлял на эту точку зрения. Я понял, что хотя у меня есть класс ProductModel, который имеет атрибут DisplayFormat, я фактически возвращал еще одну модель, содержащую список продуктов. Это называется ProductListModel, и я понял, что он вернул список класса Data Product, а не класс ProductModel!Итак, в конце концов, это было очень просто. Мне жаль, что я не потратил впустую полдня на это. Спасибо, что вдохновили меня вернуться и проверить правильно, Дарин!