有效负载未传递给处理程序

Payload is not passed to the handler

我目前正在开发一个小型 Web 应用程序示例。我想通过 Ajax 调用将 id 从 table 发送到适当的 post 处理程序。我找到了处理程序,但不知何故有效载荷在途中丢失了。开发人员工具(网络)在负载部分正确输出 ID。但是,只有 0 到达 post 处理程序。

此外,我还发现如何将整个对象传递给 Ajax 函数很有趣。

在此先感谢您的帮助。

查看

foreach (var student in Model.Students)
{
    <tr>
        <td>@student.StudentId</td>
        <td>@student.Salutation</td>
        <td>@student.FirstName</td>
        <td>@student.LastName</td>
        <td>@student.EmailAddress</td>
        <td>@student.City</td>
        <td>@student.CreatedOn.ToString("ddd., dd.MM.yyyy")</td>
        <td>
            <a class="btn btn-danger" onclick="DeleteStudentRecord(@student.StudentId)">Delete</a>
        </td>
    </tr>
}

Ajax 脚本

function DeleteStudentRecord (studentId) {
   $.ajax({
      type: "POST",
      url: '@Url.Action("DeleteStudentRecord", "Students")',
      data: {StudentId: studentId},
      dataType: "json"
   });
}

Post 处理程序 (StudentsController.cs)

[HttpPost]
public IActionResult DeleteStudentRecord(int id)
{
    StudentViewModel viewModel = new();

    _studentService.DeleteStudent(id);

    viewModel.Students = _studentService.GetAllStudents();
    ModelState.Clear();

    return View("StudentsList", viewModel);
}

Ajax 脚本必须像 :

    function DeleteStudentRecord (studentId) {
   $.ajax({
      type: "POST",
      url: '@Url.Action("DeleteStudentRecord", "Students")',
      data: {id: studentId},
      dataType: "json"
   });
}

因为在您的学生控制器 DeleteStudentRecord 操作中等待 id 而不是 StudentId。

或者您可以在 DeleteStudentRecord 操作中将 id 更改为 StudentId。