0

リストをフォームに投稿する方法を知っています。参照用のリンクはhttp://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspxです。

List> を投稿する必要があるシナリオがあります。上記のリンクに記載されているコードを使用して、投稿の値を取得しました。

生成される html は次のとおりです。


<input class="input-micro valid" min="1" name="posItems[0][0].Quantity" required="required" value="30" type="text">
<input class="input-micro valid" min="1" name="posItems[1][0].Quantity" required="required" value="20" type="text">
<input class="input-micro valid" min="1" name="posItems[2][0].Quantity" required="required" value="20" type="text">

<input class="input-micro valid" min="1" name="posItems[0][1].Quantity" required="required" value="20" type="text">
<input class="input-micro valid" min="1" name="posItems[1][1].Quantity" required="required" value="50" type="text">
<input class="input-micro valid" min="1" name="posItems[2][1].Quantity" required="required" value="20" type="text">

私の投稿アクションは次のようなものです

public ActionResult Save(List posItems)

これは、両方のリストに同じ数のアイテムがある場合、または両方のリストに同じ数があると言うことができる場合にうまく機能します。

2 番目のリストのカウントが最初のリストよりも多い場合、2 番目のリストから追加の値を取得できません。

2 番目のリストが最初のリストよりも 1 項目多い次の例を参照してください。


<input class="input-micro valid" min="1" name="posItems[0][0].Quantity" required="required" value="30" type="text">
<input class="input-micro valid" min="1" name="posItems[1][0].Quantity" required="required" value="20" type="text">
<input class="input-micro valid" min="1" name="posItems[2][0].Quantity" required="required" value="20" type="text">

<input class="input-micro valid" min="1" name="posItems[0][1].Quantity" required="required" value="20" type="text">
<input class="input-micro valid" min="1" name="posItems[1][1].Quantity" required="required" value="50" type="text">
<input class="input-micro valid" min="1" name="posItems[2][1].Quantity" required="required" value="20" type="text">
<input class="input-micro valid" min="1" name="posItems[3][1].Quantity" required="required" value="114" type="text">
4

2 に答える 2

0

cshtml:

<ul>
        <li><input type="text" name="Items[0].Name" /></li>
        <ul>
            <li><input type="text" name="Items[0].SubItems[0].Name" /></li>
            <li><input type="text" name="Items[0].SubItems[1].Name" /></li>
            <li><input type="text" name="Items[0].SubItems[2].Name" /></li>
        </ul>
    </ul>
    <ul>
        <li><input type="text" name="Items[1].Name" /></li>
        <ul>
            <li><input type="text" name="Items[1].SubItems[0].Name" /></li>
            <li><input type="text" name="Items[1].SubItems[1].Name" /></li>
            <li><input type="text" name="Items[1].SubItems[2].Name" /></li>
        </ul>
    </ul>
于 2013-10-18T08:34:19.060 に答える
0

あなたは二次元配列について話している。2 次元配列に項目 1 を含めるには、項目 0 が必要です。[3][0] がないため、3[1] はありません。それが配列の仕組みであり、それを変更することはできません。

a) 多次元配列を使用しない、または b) [3][0] を作成する唯一の選択肢

于 2012-10-05T19:28:29.830 に答える