Asp.net mvc ASP.NET MVC-删除表中的行,然后更新数据库
在my yahoo电子邮件中,收件箱显示为电子邮件项目列表。单击该项目将显示其详细信息。现在,回到收件箱。列表中的一列是复选框。如果我单击一个或多个复选框,然后单击“删除”,则所有这些项目都将被删除 这或多或少就是我希望通过ASP.NET MVC应用程序实现的目标。我有一个表,其中有一些行,我可以勾选一些复选框来删除所选行并更新数据库 我来自网络表单背景。如果单击delete按钮,它将进行回发,我可以在代码中检查需要删除的项目。然而,我是在ASP.NET MVC中这样做的,我没有回发或视图状态的好处。我认为这可以通过AJAX实现,但我希望有一个更简单的解决方案,比如一个简单的表单帖子。不幸的是,我不知道从哪里开始 此时,我可以使用JQuery删除客户端的行,但数据库部分还没有任何内容。任何提示都非常感谢 下面是我的查看代码:Asp.net mvc ASP.NET MVC-删除表中的行,然后更新数据库,asp.net-mvc,Asp.net Mvc,在my yahoo电子邮件中,收件箱显示为电子邮件项目列表。单击该项目将显示其详细信息。现在,回到收件箱。列表中的一列是复选框。如果我单击一个或多个复选框,然后单击“删除”,则所有这些项目都将被删除 这或多或少就是我希望通过ASP.NET MVC应用程序实现的目标。我有一个表,其中有一些行,我可以勾选一些复选框来删除所选行并更新数据库 我来自网络表单背景。如果单击delete按钮,它将进行回发,我可以在代码中检查需要删除的项目。然而,我是在ASP.NET MVC中这样做的,我没有回发或视图状态的
@model IEnumerable<Simplex.Data.Models.MessageBoardModel>
@{
ViewBag.Title = "Message Board";
}
<script type="text/javascript">
function deleteItems() {
$('.td_checkbox:checked').closest('tr').closest(tr).remove();
}
$(document).ready(function () {
$('#btnDelete').click(function () {
deleteItems();
});
});
</script>
<div id="content">
<h2>Board List</h2>
@{ Html.RenderAction("search", "home"); }
<div class="board_list">
<table>
<tr>
<th>
No
</th>
<th>
Subject
</th>
<th>
Posted By
</th>
<th>
Posting Date
</th>
</tr>
@foreach (var item in Model) {
<tr id=@item.Id>
<td>
@Html.DisplayFor(modelItem => item.Id)
</td>
<td class="subject">
<a href="@Url.Action("details", new { id = item.Id })"><input class="td_checkbox" type="checkbox" /> @item.Subject</a>
</td>
<td>
@Html.DisplayFor(modelItem => item.Username)
</td>
<td>
@Html.DisplayFor(modelItem => item.DatePosted)
</td>
</tr>
}
</table>
<button id="btnDelete">Delete</button>
<a href="@Url.Action("create")"><input type="button" value="Post" /></a>
</div>
@model IEnumerable
@{
ViewBag.Title=“留言板”;
}
函数deleteItems(){
$('.td_复选框:选中').closest('tr').closest(tr).remove();
}
$(文档).ready(函数(){
$('#btnDelete')。单击(函数(){
删除项目();
});
});
董事会名单
@{Html.RenderAction(“搜索”、“主页”);}
不
主题
邮寄人
投寄日期
@foreach(模型中的var项目){
@DisplayFor(modeleItem=>item.Id)
@DisplayFor(modelItem=>item.Username)
@DisplayFor(modelItem=>item.DatePosted)
}
删除
第一个问题,不要使用
@foreach
,这会去除内置的收集处理。改用@Html.DisplayForModel()
。这将正确创建正确的索引项名称和id
然后,在HttpPost处理程序中,您需要将参数设置为集合,您可以查看列表并查看设置了哪些复选框。第一个问题,不要使用去掉内置集合处理的
@foreach
。改用@Html.DisplayForModel()
。这将正确创建正确的索引项名称和id
然后,在HttpPost处理程序中,您需要将参数设置为集合,您可以浏览列表并查看设置了哪些复选框。使用
for
循环为每条消息呈现以下内容:
<input name="messages[@i.ToString()].Key" type="hidden" value="@item.Id" />
<input name="messages[@i.ToString()].Value" type="checkbox" value="true" />
然后像这样在您的操作中捕获发布的值
[HttpPost]
public ActionResult Delete(Dictionary<int,bool> messages)
{
IEnumerable<int> idsOfItemsYouWantToDelete = messages.Where(pair => pair.Value).Select(pair => pair.Key);
// Do delete, return redirect or whatever
}
[HttpPost]
公共操作结果删除(字典消息)
{
IEnumerable idsOfItemsYouWantToDelete=messages.Where(pair=>pair.Value)。选择(pair=>pair.Key);
//执行删除、返回重定向或其他操作
}
这是因为Dictionary
是KeyValuePair
s和.Key
和.Value
输入字段将与.Key
和.Value
属性相匹配
您可能需要阅读使用
for
循环为每条消息呈现以下内容:
<input name="messages[@i.ToString()].Key" type="hidden" value="@item.Id" />
<input name="messages[@i.ToString()].Value" type="checkbox" value="true" />
然后像这样在您的操作中捕获发布的值
[HttpPost]
public ActionResult Delete(Dictionary<int,bool> messages)
{
IEnumerable<int> idsOfItemsYouWantToDelete = messages.Where(pair => pair.Value).Select(pair => pair.Key);
// Do delete, return redirect or whatever
}
[HttpPost]
公共操作结果删除(字典消息)
{
IEnumerable idsOfItemsYouWantToDelete=messages.Where(pair=>pair.Value)。选择(pair=>pair.Key);
//执行删除、返回重定向或其他操作
}
这是因为Dictionary
是KeyValuePair
s和.Key
和.Value
输入字段将与.Key
和.Value
属性相匹配
你可能想读书