3

我想使用复选框来选择多个用户并将结果发送到我的控制器。

起初我只是将移动用户的数量发送给控制器,但有必要发送更多的数量,我需要号码和名称用户,我的控制器和我的视图如下:

例如,会以某种方式发送号码和姓名吗?

@using (Html.BeginForm("Enviar", "Home")) {
  <table id="myTable">
    <thead>
      <tr>
        <th>
          <input type="checkbox" />
        </th>
        <th>@Html.DisplayName("Nome")</th>
        <th>@Html.DisplayName("CANCELADO")</th>
        <th>@Html.DisplayName("Numero")</th>
      </tr>
    </thead>
    <tbody>
      @foreach (var item in Model) {
        <tr>
          <td>
            <input type="checkbox" name="CELULAR" value="@item.CELULAR" />
          </td>
          <td name="Nome">@Html.DisplayFor(modelItem => item.NOME)</td>
          <td name="Email">@Html.DisplayFor(modelItem => item.CANCELADO)</td>
          <td name="Celular" value="@item.CELULAR">@Html.DisplayFor(modelItem => item.CELULAR)</td>
        </tr>
      }
    </tbody>   
  </table>
  <input type="submit" value="Selecionar"/> 
}

接收的控制器:

[HttpPost]
public ActionResult Enviar(String[] celular) {
   .....
   return View();
}
4

1 回答 1

6

发布集合时,您必须正确索引它们。因此,您必须使用for循环而不是foreach.

另外,为什么您HttpPost选择 aString[]而不是您的模型?首先将其更改为您的模型类型。

假设您的模型是:@model List<YourType>

改变你HttpPost的看法:

[HttpPost]
public ActionResult Enviar(List<YourType> model) {
   .....
   return View();
}

现在我们将把你改写foreach成 afor并使用CheckBoxForhelper。此外,HiddenFor为您希望在帖子中看到的任何属性添加字段:

@for (int i = 0; i < Model.Count; i++)
{
    <tr>
      <td>
        @Html.CheckBoxFor(m => m[i].CELULAR)
      </td>
      <td name="Nome">
          @Html.HiddenFor(m => m[i].NOME)
          @Html.DisplayFor(m => m[i].NOME)
      </td>
      <td name="Email">
          @Html.HiddenFor(m => m[i].CANCELADO)
          @Html.DisplayFor(m => m[i].CANCELADO)
      </td>
      <td name="Celular" value="@m[i].CELULAR">
          @Html.DisplayFor(m => m[i].CELULAR)
      </td>
    </tr>
}
于 2013-04-17T21:41:45.787 回答