私はPostStudentメソッドを持つwebApiをセットアップしました。 APIコールは正常に動作し、DBに新しい学生を作成しますが、レスポンスボディの値を返すことはできません。私はOk(newStudent)とCreated( "〜/ api/poststudent"、newStudent)を返そうとしましたが、どちらも私が必要とするnewStudent値を返していません。postasyncコールの応答を使用するにはどうすればよいですか?
私はすべての応答を完了し、実際の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);
誰かが私を助けてくれることを願っています。私は他のページへのリダイレクトがとても難しいとは思わなかった!
乾杯。
これらの3つのスニペットには、Web APIコントローラとWeb APIクライアントコード(ファイルとメソッド名)からの例外を示すコンテキストを追加してください。明確なコード構造は、読者がコードを理解するのに役立ちます。私はコントロールフローが第3のスニペットに達する方法を理解していません。私は公式のチュートリアルにリンクして回答を始めます。 –
3番目のスニペットから期待していることは、私には特に不明です。通常、ASP.NET MVCアプリケーションのコードのリダイレクトは、RedirectToAction()を使用して行われます –