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" [email protected] />
<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());
}
<input type="hidden" / > を使用する代わりに、より良い解決策があるのではないかと思っています。
または、「ul」タグの外にフォームを配置する方法は?
私のコードを改善してください、ありがとう。
Delete メソッドには HttpPost を使用しているため、送信パラメータを格納するために隠しフィールドを使用しても問題はありません。ただし、次のようにコードを更新することで、フォームを「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>
}
ジャバスクリプト
function setDeletedId(deletedId) {
var hidden = document.getElementById("Id");
hidden.value = deletedId;
}
もう 1 つの方法は、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());
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加