0

我有一个具有 PostStudent 方法的 webApi 设置。API 调用工作正常并在数据库中创建了一个新学生,但我无法让它返回响应正文中的值。我尝试返回 Ok(newStudent) 和 Created("~/api/poststudent", newStudent) 但它们都没有返回我需要的 newStudent 值。

我已经完成了所有响应,但找不到实际的 newStudent 对象。它在那里,我只是想念它还是我的代码有问题?

这是 API 中的 PostStudent 方法;

var newStudent = new Student
{
  studentId = nextStudentId,
  studentFirstName = studentEntry.StudentFirstName,
  studentLastName = studentEntry.StudentLastName,
  studentDOB = studentEntry.StudentDob,
  studentEmergencyContactName = studentEntry.StudentEmergencyContactName,
  studentEmergencyContactNum = studentEntry.StudentEmergencyContactNum,
  ticketNumber = studentEntry.TicketNumber
};

db.Student.Add(newStudent);

try
{
  db.SaveChanges();
}
catch (DbUpdateException)
{
  if (StudentExists(newStudent.studentId))
    return BadRequest("That student id already exists");
    throw;
}
return Ok(newStudent.studentId);
// return Created("~/api/poststudent", newStudent);     
}

这是我调用 postasync 并尝试保存响应正文的地方;

var response = client.PostAsync("api/poststudent", content);
return response.Result.Content.ReadAsStringAsync().ToString();

这就是我想使用价值的地方;

var newStudentId = controller.PostStudent(studentFirstName, studentLastName, studentDob, ticketNumber);
var url = "~/AddGuardian/AddGuardian/" + newStudentId;
Response.Redirect(url);

我希望有一个人可以帮助我。我从没想过重定向到另一个页面会这么难!

干杯。

4

2 回答 2

1

你不是在等待电话async

var response = await client.PostAsync("api/poststudent", content);
return (await response.Result.Content.ReadAsStringAsync()).ToString();
于 2017-09-25T10:55:52.110 回答
0

有 2 个官方教程可用于快速启动 ASP.NET WebApi 项目。

我想建议通过这些工作。如果您发现您的应用程序做错了事,请针对这些示例修复您的应用程序。如果您的要求与示例中给出的不同,您可以在问题中强调这一点。

于 2017-09-26T07:12:24.423 回答