【发布时间】:2016-11-02 08:25:38
【问题描述】:
使用复选框,并坚持将选定的复选框传输到后端。我知道如何做到这一点,但我想听听其他变体。所以我有一个带有复选框的表格:
<td>
<input type="checkbox" class="check" value="@item.Id"/>
</td>
并提交按钮
@Html.ActionLink("delete", "DeleteSelectedPictures")
所以我的变体是添加布尔属性并将表从input更改为@html.checkboxfor(_ => _.selected),然后如何获取这些选定的项目?还有其他方法可以解决这个问题吗?
//控制器逻辑
public ActionResult DeleteSelectedPictures(int itemsId)
{
var pictures = from items in _Db.Pictures
where items.Id == itemsId
select items;
foreach (var picture in pictures)
{
_Db.Pictures.Remove(picture);
}
return RedirectToAction("Index");
}
更新 2.
由于Ali sultani的建议,这里是更新,但是有问题,从这里var selected = Request.Form["chkPicture"];
cshtml:
<div>
@using (Html.BeginForm())
{
<table id="images">
<tbody>
@foreach (var item in Model.Pictures.Where(o => o.PartnerId == Model.PartnerId && !o.IsDeleted))
{
<tr>
<td>
<input name="chkPicture" type="checkbox" class="check" value="@item.Id"/>
</td>
<td>
<img src="@(Model.BaseUrl)GetPreview.ashx?h=200&id=@item.Id&w=200"/>
</td>
</tr>
}
</tbody>
</table>
<div id="container">
@Html.ActionLink(R("Remove"), "DeleteSelectedPictures")
</div>
}
</div>
和cs控制器:
public ActionResult DeleteSelectedPictures()
{
var selected = Request.Form["chkPicture"];
var selectedList = selected.Split(',');
foreach (var temp in selectedList)
{
var strTemp = Convert.ToInt32(temp);
var deletePicture = _Db.Pictures.FirstOrDefault(p => p.Id == strTemp);
_Db.Pictures.Remove(deletePicture);
_Db.SaveChanges();
}
return RedirectToAction("Index");
}
【问题讨论】:
-
如果您使用多个复选框,请使用 CheckboxList。
-
你能粘贴你的控制器逻辑吗?
-
@Anonymous,帖子已更新。但我认为这行不通...因为我需要转移一组选定的项目..
-
@Abdul,你能举个例子吗?我应该在模型中为复选框列表中的 labmda 表达式设置属性吗?
-
请参考我的stackoverflow帖子:Here
标签: c# html asp.net-mvc razor checkbox