質問

ユーザーが入力する同じアイテムの数をユーザーが指定できるいくつかの要素を含む、ユーザーが入力するデータ入力フィールドのヒープ全体を含むフォームがあります。これは、PhilHaackのブログエントリリストへのモデルのバインド。

JQueryを使用して、追加のフォーム要素を作成したり、正しくインデックスを付けたりすることに成功しています。私の問題は、コントローラー内でこれらを実際に読み取るための最良の方法です。この記事のコントローラーは、IList<Product>という1つのオブジェクトのみを予期していますが、私のコントローラーはすでにFormCollection formを予期しているため、IList<Itmes>も送信しようとしています。

これをコントローラーが期待するパラメーターに追加するか、form ["items"]などを介してアクセスする必要がありますか?

表示 ジェネラコディセタグプレ

コントローラー ジェネラコディセタグプレ

DTO ジェネラコディセタグプレ

役に立ちましたか?

解決 2

フレームワークによってリストにマッピングされているFormCollectionやその他のデータを使用して渡されるデータで水を濁らせるのではなく、FormCollectionのみを使用することにしました。以下のコードは、アイテムを取得し、DTOを手動でハイドレイトします。これはうまく機能し、リストに直接マッピングすることができなかったコード内で他のいくつかのことを行うことができます。 ジェネラコディセタグプレ

他のヒント

次のようにmyItemをパラメータとして追加できます: ジェネラコディセタグプレ

フォームデータから自動的にバインドされ、myItemパラメータに入力されます。

私はこれを試したことがないので、試してみる必要がありますが、UpdateModelまたはTryUpdateModelメソッドを使用してみませんか?これは、IListをコントローラーのアクションに渡すのと同じ方法でバインドする必要があります。

つまり: ジェネラコディセタグプレ

私は開発用コンピューターを使用していないので、動作するかどうかはわかりませんが、動作するはずです。必要なものかどうか教えてください。

編集:エンティティフレームワークを使用している場合、UpdateModelメソッドで多くの問題に遭遇し、独自のメソッドを作成することに頼ったことは注目に値します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top