11

EditorFor テンプレートを使用してレンダリングしようとしているモデル プロパティがあり、DisplayFormat 属性を使用して書式設定を適用しようとしています。しかし、まったく機能していません。完全に無視されています。

ここに私のテンプレートがあります:

@model System.Decimal?
@Html.TextBoxFor(m => m)

これが私のモデルです:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:0.00}")]
public decimal? Retail { get; set; }

これが私の見解です:

@Html.EditorFor(m => m.Retail)

しかし、次の値でテキストボックスをレンダリングしています:

189.9900

それはかなり簡単に思えますが、機能していません。その理由はわかりません。

更新: キックのために、DisplayFor テンプレートで試してみましたが、うまくいきました:

@Html.DisplayFor(m => m.Retail)

では、trueに設定した場合、DisplayFor テンプレートは機能するのに、EditorFor テンプレートは機能しないのはなぜでしょうApplyFormatInEditModeか?

更新 2: 気にしないでください。機能した理由は、10 進表示テンプレートがそのようにフォーマットするようにハードコードされていたためです。したがって、私の表示テンプレートも機能しません。

4

3 に答える 3

4

Darin Dimitrov がこの回答を投稿し、彼のソリューションを使用して機能させることができました。

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue)

少し大雑把ですが、IMO、これは w/ では機能しませんTextBoxForが、少なくとも機能します。

于 2011-10-20T23:25:40.957 に答える
3

この形式で試してみると、18.999,00 が出力されます

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:N}")]
于 2011-10-20T22:54:58.653 に答える
2

DisplayFormatそのようには機能しません。プロパティのテキスト ボックスを手動で作成しても、機能しません。あなたがした場合にのみ機能します

@model System.Decimal?
@Html.DisplayFor(m => m)
于 2011-10-20T22:41:55.980 に答える