我想将两个ID传递给我的方法。该方法称为DeleteAttendee,位于“培训”区域中我的SessionController上。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult DeleteAttendee(int sessId, int attId)
我已经创建了一个链接,可以将您带到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>
使用默认路由,找不到该页面。我需要更改或设置以路由到该方法吗?
编辑:显然问题是链接正在执行GET,但我需要将其发布。我该如何更改?
我认为您可以使用button
控件完成我想做的事情。如果我可以传入模型和特定的ID,它实际上对我来说会更好。我尝试了下面的按钮。在标记中看起来正确,但是单击按钮后,id不断被sessionId取代。
<button formaction="/Training/Session/DeleteAttendee/@item.Id" formmethod="post">Edit</button>
答案 0 :(得分:0)
您可以改用ActionLink
吗?
@Html.ActionLink("Delete", "DeleteAttendee", "Session", new { sessId = Model.Id, attId = item.Attendee.Id })
答案 1 :(得分:0)
我最终使用了一个提交按钮,该按钮调用了javascript,并将其值添加到viewmodel中以完成此操作。
在页面上:
<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
});
}