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">

我的帖子动作就像

公共 ActionResult 保存(列出 posItems)

当两个列表具有相同数量的项目或者您可以说两个列表具有相同计数时,这很有效。

当第二个列表中的计数大于第一个列表时,我不会从第二个列表中获取附加值。

请参阅下面的示例,其中第二个列表比第一个列表多 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

你说的是二维数组。为了在二维数组中有一个项目 1,你必须有一个项目 0。因为你没有 [3][0],所以不可能有 3[1]。这就是数组的工作方式,你无法改变它。

您唯一的选择 a) 不使用多维数组或 b) 创建 [3][0]

于 2012-10-05T19:28:29.830 回答