Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC-删除表中的行,然后更新数据库_Asp.net Mvc - Fatal编程技术网

Asp.net mvc ASP.NET MVC-删除表中的行,然后更新数据库

Asp.net mvc ASP.NET MVC-删除表中的行,然后更新数据库,asp.net-mvc,Asp.net Mvc,在my yahoo电子邮件中,收件箱显示为电子邮件项目列表。单击该项目将显示其详细信息。现在,回到收件箱。列表中的一列是复选框。如果我单击一个或多个复选框,然后单击“删除”,则所有这些项目都将被删除 这或多或少就是我希望通过ASP.NET MVC应用程序实现的目标。我有一个表,其中有一些行,我可以勾选一些复选框来删除所选行并更新数据库 我来自网络表单背景。如果单击delete按钮,它将进行回发,我可以在代码中检查需要删除的项目。然而,我是在ASP.NET MVC中这样做的,我没有回发或视图状态的

在my yahoo电子邮件中,收件箱显示为电子邮件项目列表。单击该项目将显示其详细信息。现在,回到收件箱。列表中的一列是复选框。如果我单击一个或多个复选框,然后单击“删除”,则所有这些项目都将被删除

这或多或少就是我希望通过ASP.NET MVC应用程序实现的目标。我有一个表,其中有一些行,我可以勾选一些复选框来删除所选行并更新数据库

我来自网络表单背景。如果单击delete按钮,它将进行回发,我可以在代码中检查需要删除的项目。然而,我是在ASP.NET MVC中这样做的,我没有回发或视图状态的好处。我认为这可以通过AJAX实现,但我希望有一个更简单的解决方案,比如一个简单的表单帖子。不幸的是,我不知道从哪里开始

此时,我可以使用JQuery删除客户端的行,但数据库部分还没有任何内容。任何提示都非常感谢

下面是我的查看代码:

@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" />&nbsp;@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
属性相匹配

你可能想读书