我正在使用MVC 3的购物车网站,并使用代码优先的实体框架。我送过该模型是产品对象的列表,每个这些对象包括该物业:
[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,我意识到它返回了产品数据类的列表 - 而不是ProductModel类!
所以最后它实际上很简单。只是希望我没有浪费半天的时间。谢谢你鼓励我回去检查,Darin!