Reputation: 2807
Part of my view looks like
<table border="1" class="table table-hover">
<tr><th>Item</th><th>Description</th><th>Price</th><th>Quantity</th></tr>
<tr>
<td>Shirt</td>
<td>T-Shirt</td>
<td>5.0000</td>
<td><select class="form-control" id="items_1_" name="items[1]"><option value="">Select quantity</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select></td>
</tr>
<tr>
<td>Shirt</td>
<td>Full-Sleeve</td>
<td>6.0000</td>
<td><select class="form-control" id="items_2_" name="items[2]"><option value="">Select quantity</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select></td>
</tr>
<tr>
<td>Trousers</td>
<td>Half</td>
<td>4.0000</td>
<td><select class="form-control" id="items_3_" name="items[3]"><option value="">Select quantity</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select></td>
</tr>
<tr>
<td>Trousers</td>
<td>Full</td>
<td>6.0000</td>
<td><select class="form-control" id="items_4_" name="items[4]"><option value="">Select quantity</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select></td>
</tr>
</table>
My controller looks like
[HttpPost]
public ActionResult RequestLaundry(int laundry, int pickuphour, int pickupminute, int[] items)
{
var req = Request.Form;
return View();
}
The data posted to controller from view looks like
{laundry=1&pickuphour=17&pickupminute=16&items%5b1%5d=5&items%5b2%5d=0&items%5b3%5d=1&items%5b4%5d=4}
Though all other model parameters are getting bound with default model binder, items
is null
. However, the post request looks fine to me. I am using ASP.NET MVC 5.0 with VS2015. Where could the problem be?
Upvotes: 1
Views: 855
Reputation: 4473
You are missing items[0]
Array or list is zero based. Model binder is getting confused since it cant find the first item.
You can avoid using numbered indexer at all by using following syntax
name="items[]"
Upvotes: 2