如何删除每个项目中单击按钮的项目?

时间:2017-03-31 17:06:16

标签: c# html asp.net-mvc razor asp.net-web-api

我是Html和ASP.Net MVC的新手。
我想让视图看起来像这样:

One item one delete button

点击每个按钮时,每个项目都会被删除

这是我的简单代码

@using ControllerPractice.Models
@model IEnumerable<Table>

@{
    ViewBag.Title = "Index";
}

<h2>Index , Data amounts @Model.Count()</h2>
<ul>
    @foreach (var t in Model)
    {
        <li><h2>@t.Title</h2></li>
        <li>@t.Text</li>
        using (Html.BeginForm("Delete", "Home"))
        {
            <input type="hidden" name="Id" value=@t.Id />
            <input type="submit" value="Delete" />
        }
    }
</ul>


<div>
    @using (Html.BeginForm("Post", "Home"))
    {
        <p>
            Title: <input type="text" name="Title">
            Content: <input type="text" name="Text">
            <input type="submit" value="Submit">
        </p>
    }
</div>
<div>

</div>

和我的 API

[HttpPost]
        public ActionResult Delete(int? Id)
        {
            db.Table.Remove(db.Table.Find(Id));
            db.SaveChanges();
            return View("Index", db.Table.ToList());
        }
  

我想知道是否有更好的解决方案,而不是使用&lt; input type =&#34; hidden&#34; /&gt;
  或者如何将表格放在&#39; ul&#39;之外。标签?
  请改进我的代码,谢谢

1 个答案:

答案 0 :(得分:0)

您使用HttpPost进行删除方法,因此使用隐藏字段存储提交参数时没有任何错误。 但是你可以将表格移到“&#39; ul”之外。通过像这样更新您的代码来标记。

剃刀代码

<h2>Index , Data amounts @Model.Count()</h2>
using (Html.BeginForm("Delete", "Home"))
{
    <ul>
        @foreach (var t in Model)
        {
            <li><h2>@t.Title</h2></li>
            <li>@t.Text</li>
                <input type="hidden" name="Id" value="" />
                <input type="submit" value="Delete" onclick="setDeletedId('@t.Id')" />
        }
    </ul>
}

Javascript

function setDeletedId(deletedId) {
   var hidden = document.getElementById("Id");
   hidden.value = deletedId;
}

另一种方法是将Delete方法更新为HttpGet并使用Html.ActionLink

剃刀代码

<h2>Index , Data amounts @Model.Count()</h2>
<ul>
    @foreach (var t in Model)
    {
        <li><h2>@t.Title</h2></li>
        <li>@t.Text</li>
        <%=Html.ActionLink("Delete", "Delete", "Home", new {id = "@t.Id"}, null)%>
    }
</ul>

控制器

[HttpGet]
public ActionResult Delete(int? Id)
{
    db.Table.Remove(db.Table.Find(Id));
    db.SaveChanges();
    return View("Index", db.Table.ToList());
}