1

私は現在、TimesheetEntries のリストを含む Timesheet クラスを持つ大規模なプロジェクトに取り組んでいます。これには、次のような編集ページがあります。

<!-- Other timesheet properties -->
@Html.EditorFor(model => model.TimesheetEntries)

これはうまく機能します。タイムシートのエントリごとに行を取得します。タイムシート (サーバーへの POST) を保存すると、カスタム モデル バインダーは、タイムシートをコントローラーに渡す前に空の行を削除します。つまり、タイムシートには、POST データよりも少ない行を含めることができます。

検証エラーが発生した場合は、編集ページを再表示しますが、ここで問題が発生します。

レコードmodel.TimesheetEntriesが含まれている場合、データの HTML を作成するのではなく、POST データ (空の行を含む) から最初の行を再現します。これは、明らかに望ましくないテーブルの下部にある多くの行を失うことを意味します。nHtml.EditorFor()n

なぜこれが起こっているのか、または EditorFor を期待どおりに動作させる方法を教えてもらえますか?

プロセスを説明する図を次に示します。

タイムシート プロセス

4

2 に答える 2

0

Html.EditorFor は、渡した値を使用する前に ModelState を検索することがわかりました...渡した値を取得するには、最初に ModelState から関連する値をクリアする必要がありました。

この質問/回答で詳しく説明しています。

于 2013-01-28T15:15:30.013 に答える
0

この投稿Asp:net MVC 3: @Html.EditorFor a subcollection of my model in a template? で提供されている回答をご覧ください。 それは役立つかもしれません。

于 2013-01-25T13:10:52.597 に答える