Маршрут к методу POST с моделью и идентификатором - PullRequest
0 голосов
/ 18 января 2019

Я хочу передать два идентификатора моему методу. Метод называется 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, но мне нужно POST. Как я могу изменить это?

Я думаю, вы можете выполнить то, что я хочу сделать с помощью button элемента управления. Теперь мне будет лучше, если я смогу передать модель и конкретный идентификатор. Я попробовал кнопку ниже. Это выглядит правильно в разметке, но идентификатор продолжает заменяться на sessionId при нажатии кнопки.

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

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Я закончил тем, что использовал кнопку отправки, которая вызывает 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
  });
}
0 голосов
/ 18 января 2019

Можете ли вы использовать ActionLink вместо?

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