【问题标题】:Post checked checkboxes to controller action without using HTML helper like Html.CheckboxList将选中的复选框发布到控制器操作,而不使用 Html.CheckboxList 等 HTML 助手
【发布时间】:2014-09-22 04:59:21
【问题描述】:

我有一个项目列表,我想删除复选框列表中选中的项目。

我不能使用CheckboxList 之类的东西,因为我正在使用Grid.Mvc 来显示我的台词。这就是为什么我在每一行中使用column.add("<input type="checkbox".....>); 创建复选框。

每个复选框都有自己的 ID:

<input type="checkbox" id="3">
<input type="checkbox" id="4">...

我想知道如何将所有选中的复选框 ID 传递给控制器​​(从那里我将执行删除操作)。如何通过一个按钮将一组已检查的 ID 从我的表单发布到我的控制器操作?

【问题讨论】:

  • 您将需要编写一些 JavaScript 或 jQuery 来解析它们并发送它们。除了这个建议之外,我们还需要看看您尝试了哪些仍然不起作用的方法。
  • 这个链接会很有帮助。 codeproject.com/Tips/613785/…
  • 我不能使用 checkboxlist,因为我正在使用 Grid.Mvc 来显示我的线条。这就是为什么我用 column.add("); 在每一行中创建复选框的原因

标签: asp.net-mvc razor model-binding


【解决方案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>
...
<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 属性将用于填充int[]deletedItems 数组。

【讨论】:

  • 我想这就是我所需要的。谢谢!
  • 最简单的解决方案,而不是传递整个表单。
  • 这是一个糟糕的解决方案。大多数人需要的不仅仅是复选框结果。它应该来自模型。
【解决方案2】:

如果你想生成像这样的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 传递给控制器​​。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 2014-08-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多