2012-05-01 63 views
2

我有一個模型,當我在視圖中顯示時,我想以特定方式對其進行格式化。在MVC視圖中格式化數字

[DisplayFormat(DataFormatString = "{### ##}")] 
[Display(Name = "Postnr")] 
public string CustomerZip; 
視圖

:「輸入字符串的正確的格式是不是:

@Html.DisplayFor(modelItem => item.CustomerZip) 

在DB嘗試這種方法,當值存儲爲#####,所以我得到一個錯誤」。我想(或者希望)DataFormatString會爲我重新格式化字符串。

有關如何做到這一點最好的方式的任何建議表示讚賞。

回答

3

有幾件事情:

  1. DataFormatString需要使用{0:...}索引器樣式格式字符串,就像在string.Format中使用的那樣。所以你需要做一些像[DisplayFormat(DataFormatString="{0:### ##}"]。如果大括號應該是文字,那麼你會使用[DisplayFormat(DataFormatString="{{{0:### ##}}}")]。然而...
  2. 字符串沒有這樣的格式字符#。這就是你用於數字類型的東西。如果您將該值存儲爲整數,那麼您很幸運;只需將CustomerZip的類型更改爲int即可。
  3. 如果您不是以整數形式存儲該值,而是以字符串的形式存儲(通常情況下您通常會使用郵政編碼),那麼您就會遇到更多問題。就像我說的,你沒有任何字符串自定義格式選項。您需要將CustomerZip表示爲IFormattable的一些自定義類型,您將定義它。