【问题标题】:Delete Item from another Model从另一个模型中删除项目
【发布时间】:2014-10-21 13:29:03
【问题描述】:

我正在尝试使用 asp.net mvc 构建一个简单的待办事项应用程序。 我的应用有 2 个模型: 1 用于列表 (ToDoLijst.cs)

namespace OnsLijstje.Models
{
    public class ToDoLijst
    {
        [Key]
        public int LijstId { get; set; }
        public string Titel { get; set; }

        public virtual ICollection<LijstItem> LijstItems { get; set; }
    }
}

列表中的项目 (lijstItems.cs) 为 1。

namespace OnsLijstje.Models
{
    public class LijstItem
    {
        [Key]
        public int LijstItemId{ get; set;}
        public int LijstId { get; set; }
        public string Item { get; set; }

        public virtual ToDoLijst TodoLijst { get; set; }
    }
}

现在我有一个视图,其中列表与它们的项目一起显示,这很好用。这是 ToDoLijst 视图的 Index.cshtml。

<div class="container lijsten">
@foreach (var lijst in Model.Lijsten)
{
    <div class="col-lg-5 lijst">
        <div class="row">
            <div class="col-lg-11">
                <h3>
                    @Html.DisplayFor(modelItem => lijst.Titel)
                </h3>
            </div>
            <div class="col-lg-1">
                @using (Html.BeginForm("Delete", "ToDoLijsten", new { id = Html.DisplayFor(modelItem => lijst.LijstId) }))
                {
                    @Html.AntiForgeryToken()
                    <div class="form-actions no-color pull-right">
                        <button type="Submit" value="Delete" class="btn btn-xs btn-default btn-close"><span class="glyphicon glyphicon-remove"></span></button>
                    </div>
                }
            </div>
        </div>
        @foreach (var item in Model.LijstItems)
        {
            if (item.LijstId == lijst.LijstId)
            {<div class="row">
                <div class="col-lg-11">
                    <p>@Html.DisplayFor(modelItem => item.Item)</p>
                </div>
                <div class="col-lg-1">
                    <a href="@Url.Action("Delete", "LijstItems", new { id = item.LijstItemId})"><span class="glyphicon glyphicon-remove"></span></a>
                </div>
            </div>
            }
        }
    </div>
}

我可以删除整个列表。 Bud 现在我希望能够从列表中逐个删除项目。我使用下面的代码来执行此操作,它将我带到 LijstItems 视图的视图“删除”。 有没有办法直接删除项目

这是我使用的代码:

<a href="@Url.Action("Delete", "LijstItems", new { id = item.LijstItemId})"><span class="glyphicon glyphicon-remove"></span></a>

谢谢

【问题讨论】:

  • 你能从你的控制器发布代码吗?
  • 您的删除操作不需要返回视图,它可以只返回一个简单的 JSON 确认消息,客户端可以在 ajax 发布后显示该消息。

标签: c# asp.net asp.net-mvc asp.net-mvc-5 entity-framework-6


【解决方案1】:

我从您的问题中了解到,您想在不进入删除页面的情况下删除记录:

这样做:

@foreach (var item in Model.LijstItems)
        {
            if (item.LijstId == lijst.LijstId)
            {<div class="row">
                <div class="col-lg-11">
                    <p>@Html.DisplayFor(modelItem => item.Item)</p>
                </div>
                <div class="col-lg-1">
                    <input type="button" value="Delete" id="deleteButton" data-id="@item.LijstItemId"/>
                </div>
            </div>
            }
        }


<script>
$("#deleteButton").click(function(e){
     e.preventDefault();
     var id=$(this).data("id");
     $.post('@Url.Action("DeleteDirectly","YourController")',new {id:id},function(data){
         if(data.status){
            alert("Delete succeeded!");             
         }
         else{
            alert("Delete failed!");
         }
     });
});
</script>

在你的控制器中

public JsonResult DeleteDirectly(int id)
{
     // you do the delete from database
     // if deleted successfully from database then write the following code
     return Json(new {status=true});
     // if deletion was failed for any reason, then return the following code
     return Json(new {status=false});
}

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 2012-03-07
    相关资源
    最近更新 更多