我是Html和ASP.Net MVC的新手。
我想让视图看起来像这样:
点击每个按钮时,每个项目都会被删除
这是我的简单代码
@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;之外。标签?
请改进我的代码,谢谢。
答案 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());
}