我希望這是一個相當簡單的,雖然大量谷歌搜索後,我一直無法解決它。在MVC 3中,我無法獲得@ Html.DisplayFor來呈現格式化的字符串
我正在使用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!
你是對的達林。現在已經很晚了,我正在犯一個愚蠢的錯誤,認爲我在展示另一件事物時顯示了一件事情!我會更新我的帖子。感謝您證明它確實可行! –
只是'[DataType(DataType.Currency)]'就足夠了。你甚至不需要DisplayFormat –