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

时间:2016-11-01 02:14:53

标签: c# razor asp.net-core .net-core

我有以下代码

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

我需要在复选框中检查项目的参考(在控制器中)。我怎样才能有效地做到这一点? (我做了一些谷歌搜索,由于不同的原因,我无法将其与模型绑定,因此我必须以不同的方式进行)

1 个答案:

答案 0 :(得分:0)

嗯,您有三种主要方式可以在控制器中使用数据。

  • 的RouteData
  • 的Request.Form
  • Request.Query

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

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

  1. 在客户端上,使用项目的ID或名称或某些内容为每个复选框创建唯一与项目相关的名称。
  2. Controller中,在迭代ViewModel中的项目时,使用Request.Form[itemId]
  3. 等内容查找表单中相应复选框的值