ビューモデルにdoubleの配列があり、次のようなデータ形式の文字列を適用したいと思います。
class MyVM
{
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:F2}")]
public double Currents[] { get; set; }
}
私のビューでは、以下に示すような配列でEditorForを使用しています。これは、データ形式の文字列を適用しないことを除いて、正しく機能しています。
@Html.EditorFor(model => model.Currents)
カスタムテンプレートを使用できることを学びましたが、カスタムテンプレートを作成するよりも簡単な方法があるのではないかと思いました。カスタムテンプレートが唯一の解決策である場合、フォーマットを処理する必要がある最も単純なカスタムテンプレートは何ですか?作成してみましたが、データフォーマット文字列を正しく適用できませんでした。
以下のコンテンツを使用して、〜Views\SharedフォルダーにCurrentsTemplate.cshtmlを作成できます。
@model double[]
@foreach (double x in Model) {
<div class="editor-field">
@Html.TextBoxFor(m=>x, "{0:F2}")
</div>
}
@ Html.EditorFor(m => m.Currents、 "CurrentsTemplate")を呼び出すことでそれを使用すると、機能しますが、POST後にフォームデータが保持されません。TextBoxと一緒にforループに隠しフィールドが必要だと思います。