我有一个项目列表,我想删除在复选框列表中选中的项目。
我不能使用像CheckboxList
这样的东西,因为我正在使用Grid.Mvc
来显示我的线条。这就是我用column.add("<input type="checkbox".....>);
在每一行创建复选框的原因。
每个复选框都有自己的ID:
<input type="checkbox" id="3">
<input type="checkbox" id="4">...
我想知道如何将所有选中的复选框ID传递给控制器(从那里我将执行删除操作)。如何通过一个按钮将我的表单中的已检查ID数组发布到我的控制器操作?
答案 0 :(得分:36)
生成的HTML示例:
<label><input type="checkbox" name="deletedItems" value="3"> Some label for 3</label>
<label><input type="checkbox" name="deletedItems" value="4"> Some label for 4</label>
...
<button type="submit">Submit</submit>
控制器操作:
[HttpPost]
public ActionResult MyAction(int[] deletedItems)
{
// deletedItems contains all values that were checked
// when the submit button was clicked. Here you can
// loop through the array of IDs and delete by ID.
...
}
请注意,复选框没有id
属性。它不用于模型绑定。相反,它有一个名为“deletedItems”的name
属性,它匹配MyAction
控制器操作的参数名称,这是模型绑定时使用的属性。已选中复选框的value
属性将用于填充deletedItems
的{{1}}数组。
答案 1 :(得分:1)
如果你想生成像
这样的html<label><input type="checkbox" name="deletedItems" value="3"> Some label for 3</label>
<label><input type="checkbox" name="deletedItems" value="4"> Some label for 4</label>
然后您可以使用以下代码
<td>@Html.CheckBox("selectedItems", new { @value = @item.checkId })</td>
<td><input id="selectedItems" name="selectedItems" type="checkbox" value="11503" />
<input name="selectedItems" type="hidden" value="false" />
</td>
它不会将selectedItems传递给控制器。