2

ビューに表示されるときに特定の方法でフォーマットしたい数値を持つモデルがあります。

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

ビューで:

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

DB では、値は ##### として保存されるため、このアプローチを試みると、「入力文字列が正しい形式ではありませんでした」というエラーが発生します。私は、DataFormatString が文字列を再フォーマットしてくれると思っていました (むしろ期待していました)。

これを最善の方法で行う方法についての提案は大歓迎です。

4

3 に答える 3

3

いくつかのこと:

  1. で使用するように、{0:...} インデクサー スタイルのDataFormatString書式文字列を使用する必要がありますstring.Format。したがって、次のようなことをする必要があります[DisplayFormat(DataFormatString="{0:### ##}"]。中括弧がリテラルであると想定されている場合は、 を使用します[DisplayFormat(DataFormatString="{{{0:### ##}}}")]。でも...
  2. 文字列にはそのようなフォーマット文字はありません#。これは、数値型に使用するものです。値を整数として保存している場合は、幸運です。CustomerZipの型を intに変更するだけです。
  3. 値を整数として保存するのではなく、文字列として保存する場合 (通常は郵便番号を扱うことはありません)、さらに問題が発生します。私が言ったように、文字列を使用したカスタム形式のオプションはありません。CustomerZip を、定義する IFormattable であるカスタム タイプとして表す必要があります。
于 2012-05-01T08:24:55.397 に答える
1

次の形式を使用します。

"{0:### ##}"

MSDNページの例を参照してくださいhttp://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayformatattribute.dataformatstring.aspx

于 2012-05-01T08:21:13.120 に答える