我的视图中有一个带有表格的表格,并且在每个单元格上都有一个复选框。我已经为每个复选框使用了单独的ID,但是我不知道如何将它们分别传递给控制器操作。我知道如何在“名称”属性上传递单个参数,但是我不确定如何使用这么多不同的复选框来处理它。
查看
@{
bool IsOwnRegistration = false;
foreach (var item in Model.Events.Where(i => i.UserId == Model.UserID && Convert.ToDateTime(i.Date) > dateTime))
{
if (item.HasCreatedOtherUsers == null)
{
IsOwnRegistration = true;
}
string Surname = "";
string Lastname = "";
<tr>
@{
foreach (var Useritem in Model.Users.Where(i => i.UserId == item.HasCreatedOtherUsers))
{
Surname = Useritem.Vorname;
Lastname = Useritem.Nachname;
}
if (IsOwnRegistration == true)
{
<th style="background-color:grey; width:33%;">
Meine Reservation
</th>
<th style="width:33%;">@item.Date</th>
<th style="width:33%;">
<div class="custom-control custom-checkbox ">
<input type="checkbox" class="custom-control-input" name="@item.EventId" id="@item.Date@item.EventId">
<label class="custom-control-label" for="@item.Date@item.EventId"><i style="color:red;" class="fas fa-trash-alt"></i>
</label>
</div>
</th>
}
else
{
<th style="width:33%;">@Surname @Lastname</th>
<th style="width:33%;">@item.Date</th>
<th style="width:33%;">
<div class="custom-control custom-checkbox ">
<input type="checkbox" class="custom-control-input" name="@item.EventId" id="@item.Date@item.EventId">
<label class="custom-control-label" for="@item.Date@item.EventId"><i style="color:red;" class="fas fa-trash-alt"></i>
</label>
</div>
</th>
}
}
控制器
public ActionResult DeleteRegistrations(Need to get values of all checkboxes)
{
return RedirectToAction("HomePage");
}
答案 0 :(得分:3)
为了将选定的复选框传输到操作方法,这些复选框应共享一个与操作方法的参数名称匹配的通用名称。以下示例显示了一个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
属性设置为原始字符串(或在更复杂的情况下为ID)。
表单由POST请求提交到以下操作方法:
[HttpPost]
public ActionResult Index(IEnumerable<string> selectedValues)
{
return View(selectedValues);
}
在POST请求中,所有选中的复选框的所有值都作为键值对以“名称=值”的形式传输。由于所有复选框共享相同的名称,因此ASP.NET MVC可以将其反序列化为IEnumerable<string>
。