处理控制器中的复选框列表

本文关键字:复选框 列表 控制器 处理 | 更新日期: 2023-09-27 18:15:48

我有以下代码

<tbody>
                    @foreach (var item in Model.Select((value, i) => new {i, value}))
                    {
                        <tr>
                            <td>
                                @Html.DisplayFor(modelItem => item.value.RfcacfAlphaNavigation.RfcrffNameFirst)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.value.RfcacfAlphaNavigation.RfcrffNameLast)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.value.RfcacfAlphaNavigation.RfcrffTaxId)
                            </td>
                            @if (item.i == 0)
                            {
                                <td>
                                    @Html.DisplayFor(modelItem => item.value.RfcacfAcct)
                                </td>
                                <td><div class="checkbox text-center"><label><input type="checkbox" /></label></div></td>
                            } else
                            {
                                <td></td>
                                <td></td>
                            }
                        </tr>
                    }

我需要有一个(在控制器中)已被复选框选中的项的引用。我怎样才能有效地做到这一点?(我已经做了一些谷歌和不同的原因,我不能绑定这个模型,所以我必须做它在一个不同的方式)

处理控制器中的复选框列表

你有三种主要方式让数据在控制器中可用。

  • RouteData
  • 请求。形式
  • 请求。查询

因为你说你不能使用模型绑定,它只是从这三个地方中的一个获取数据并将其映射到你的视图模型中,你需要从客户端以这些方式之一传递数据并在控制器中手动检索它。

我假设你的代码坐落在<form>中,被发布回控制器。在这种情况下,使用Request.Form将是一种相当直接的方法来实现您想要做的事情。

  1. 在客户端,为每个与项目唯一相关的复选框创建名称,使用项目的id或名称或诸如此类的东西。
  2. Controller中,当迭代ViewModel中的项目时,使用Request.Form[itemId]
  3. 之类的东西查找表单中相应复选框的值