使用模型和 ID 路由到 POST 方法

Route to a POST method with model and id

我想将两个 ID 传递给我的方法。该方法称为 DeleteAttendee,位于我的培训区域的 SessionController 上。

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult DeleteAttendee(int sessId, int attId)

我创建了一个 link 来到达那里 https://localhost:<port>/Training/Session/DeleteAttendee?sessId=1&attId=3

<a asp-action="DeleteAttendee" asp-route-attId="@item.Attendee.Id" asp-route-sessId="@Model.Id">Delete</a>

使用默认路由,无法找到此页面。我需要更改或设置什么才能路由到此方法?

编辑:显然问题是 link 正在执行 GET,但我需要它 POST。我该如何更改它?

我认为你可以用 button 控件完成我想做的事情。如果我可以传入模型和特定 ID,它现在对我来说实际上会更好。我尝试了下面的按钮。它在标记中看起来是正确的,但是当单击按钮时,id 不断被 sessionId 替换。

<button formaction="/Training/Session/DeleteAttendee/@item.Id" formmethod="post">Edit</button>

你能用 ActionLink 代替吗?

@Html.ActionLink("Delete", "DeleteAttendee", "Session", new { sessId = Model.Id, attId = item.Attendee.Id })

我最终使用调用 javascript 的提交按钮并将值添加到视图模型以完成此操作。

页面上:

<input type="hidden" asp-for="SelectedAttendeeId" />
<input type="button" onclick="DeleteAttendee(@item.Id)" value="E" />

在javascript中:

function DeleteAttendee(attendeeId) {
  var selectedAtt = $('#SelectedAttendeeId');
  selectedAtt.val(attendeeId);
  var model = $('#frmSession').serialize();
  $.post('/Training/Session/DeleteAttendee', model, function (data) {
    // success logic here
  });
}