C# 如何在每个项目中单击按钮删除项目?
我不熟悉Html和ASP.NETMVCC# 如何在每个项目中单击按钮删除项目?,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
我想让视图看起来像这样: 单击每个按钮时,每个项目都将被删除 这是我的简单代码
@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());
}