どのようにして、フォーム提出によってActionResultパラメータにネストされたデータを投稿できますか? 私はthis questionへの答えに似たソリューションを実装しようとしてきましたが、多くの運がないわけではありません。投稿された複雑な構造をMVCにキャッチするには
次のように問題のフォームのセクションが構成されています
<form method="post" action="/Product/Edit" class="tabs">
<input name="Prices[1].Price" id="Prices_1__Price" value="9.99" type="text">
<input name="Prices[1].Size2Price" id="Prices_1__Size2Price" value="0.00" type="text">
<input name="Prices[1].Size3Price" id="Prices_1__Size3Price" value="0.00" type="text">
<input name="Prices[2].Price" id="Prices_2__Price" value="5.00" type="text">
<input name="Prices[2].Size2Price" id="Prices_2__Size2Price" value="0.00" type="text">
<input name="Prices[2].Size3Price" id="Prices_2__Size3Price" value="0.00" type="text">
<input name="Prices[3].Price" id="Prices_3__Price" value="0.00" type="text">
<input name="Prices[3].Size2Price" id="Prices_3__Size2Price" value="0.00" type="text">
<input name="Prices[3].Size3Price" id="Prices_3__Size3Price" value="0.00" type="text">
<button type="submit">submit</button>
</form>
これは期待通りに表示ポストされたデータで、ログの罰金に貫通して来ている:モデルで
Form Submission Event: (BaseController:57-ish):
{
...
"Prices[1].Price": "9.9900",
"Prices[1].Size2Price": "0.0000",
"Prices[1].Size3Price": "0.0000",
"Prices[2].Price": "5.5800",
"Prices[2].Size2Price": "0.0000",
"Prices[2].Size3Price": "0.0000",
"Prices[3].Price": "0.0000",
"Prices[3].Size2Price": "0.0000",
"Prices[3].Size3Price": "0.0000",
...
}
私は価格のコレクションをキャッチしようとするバリエーションを試してきましたが、現在の試みは次のとおりです:
コントローラ側では3210私は「EditedProductEntry」のデータ構造を受け取り、「編集」のActionResultを持っている:
[HttpPost]
[Route("Edit", Name = "Product_Edit")]
public ActionResult Edit(EditedProductEntry post)
{
...
}
私は「ポスト」パラメータの構造は、それが「価格を受け入れる持ってしようとすると約いじってきました"コレクションが、これは私が困惑しています。残りのデータは、&が「EditedProductEntry」オブジェクトにデータを入力していますが、コレクションは残りのnullを解決しています。私は、オブジェクト[]をキャッチしようとした
は、EditedProductEntry []は、ICollectionを、IEnumerableを&も「編集」アクションに追加するパラメータとしてこれらを指定して試してみましたが、これまでのところ、私はすべての運を持っていませんしました。
誰にも他のアイデアはありますか?
1の代わりに0からインデックスを開始するか、モデルバインディングコレクションに非連続インデックスバインディングを使用する - http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx /。私は2番目の方法をお勧めします – Developer
DataContractとDataMember属性は必須ではありません(おそらく、コードにノイズを加えるだけです)。 –
入力を手動で生成するのは狂気です。それらが既存のアイテムである場合は、[この回答](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943)を参照してください。 thewビュー、参照してください[この回答](http://stackoverflow.com/questions/28019793/submit-same-partial-view-called-multiple-times-data-to-controller/28081308#28081308) –