C# 如何在每个项目中单击按钮删除项目?

C# 如何在每个项目中单击按钮删除项目?,c#,html,asp.net-mvc,razor,asp.net-web-api,C#,Html,Asp.net Mvc,Razor,Asp.net Web Api,我不熟悉Html和ASP.NETMVC 我想让视图看起来像这样: 单击每个按钮时,每个项目都将被删除 这是我的简单代码 @using ControllerPractice.Models @model IEnumerable<Table> @{ ViewBag.Title = "Index"; } <h2>Index , Data amounts @Model.Count()</h2> <ul> @foreach (var t

我不熟悉Html和ASP.NETMVC
我想让视图看起来像这样:

单击每个按钮时,每个项目都将被删除

这是我的简单代码

@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>
我想知道有没有更好的解决方案来代替使用
或如何将表格置于“ul”标签之外?
请改进我的代码,谢谢


您使用HttpPost作为Delete方法,所以在使用隐藏字段存储提交参数时并没有任何错误。 但是您可以通过如下方式更新代码,将表单移动到“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>
}
<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>
另一种方法是将Delete方法更新为HttpGet并使用Html.ActionLink

剃刀代码

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

使用隐藏输入本身并没有什么错。你可以通过…移动表格。。。将Html.BeginForm调用移动到希望它开始的位置,注意正确关闭标记。如果您遇到更具体的问题,欢迎您提出更多问题,但是“改进我的代码”并不是我们可以调试的。您可以使用(Html.BeginForm(“Delete”,“Home”new{id=t.id})){}将
id
添加为路由值-
,使用(Html.BeginForm(“Delete”,“Home”new{id=t.id})){}
谢谢!:)!有益的
[HttpGet]
public ActionResult Delete(int? Id)
{
    db.Table.Remove(db.Table.Find(Id));
    db.SaveChanges();
    return View("Index", db.Table.ToList());
}