Чтобы передать выбранные флажки в метод действия, флажки должны иметь общее имя, соответствующее имени параметра метода действия.В следующем примере показано представление Razor, в котором перечислены некоторые строки в таблице, и создан флажок для каждой строки:
@model IEnumerable<string>
@{
ViewBag.Title = "Home Page";
}
<div class="row">
<div class="col-md-12">
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<table>
@foreach (var s in Model)
{
<tr>
<td>
<input type="checkbox" name="selectedValues" value="@s" id="@s" />
<label for="@s">@s</label>
</td>
</tr>
}
</table>
<input type="submit" />
}
</div>
</div>
Обратите внимание, что для атрибута name
флажков установлено значение selectedValues,Атрибут value
устанавливается на исходную строку (или идентификатор в более сложном сценарии).
Форма отправляется с помощью запроса POST для следующего метода действия:
[HttpPost]
public ActionResult Index(IEnumerable<string> selectedValues)
{
return View(selectedValues);
}
В запросе POST все значения всех отмеченных флажков передаются в виде пар ключ-значение в форме«имя = значение».Поскольку все флажки имеют одно и то же имя, ASP.NET MVC может десериализовать это в IEnumerable<string>
.