私は現在、TimesheetEntries のリストを含む Timesheet クラスを持つ大規模なプロジェクトに取り組んでいます。これには、次のような編集ページがあります。
<!-- Other timesheet properties -->
@Html.EditorFor(model => model.TimesheetEntries)
これはうまく機能します。タイムシートのエントリごとに行を取得します。タイムシート (サーバーへの POST) を保存すると、カスタム モデル バインダーは、タイムシートをコントローラーに渡す前に空の行を削除します。つまり、タイムシートには、POST データよりも少ない行を含めることができます。
検証エラーが発生した場合は、編集ページを再表示しますが、ここで問題が発生します。
レコードmodel.TimesheetEntries
が含まれている場合、データの HTML を作成するのではなく、POST データ (空の行を含む) から最初の行を再現します。これは、明らかに望ましくないテーブルの下部にある多くの行を失うことを意味します。n
Html.EditorFor()
n
なぜこれが起こっているのか、または EditorFor を期待どおりに動作させる方法を教えてもらえますか?
プロセスを説明する図を次に示します。