从另一个模型中删除项目

时间:2014-10-21 13:29:04

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

我正在尝试使用asp.net mvc构建一个简单的todo-app。 我的应用有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; }
    }
}

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

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>
}

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

这是我使用的代码:

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

日Thnx

1 个答案:

答案 0 :(得分: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});
}

希望它会帮助你