Я искал вокруг, но я не мог найти рабочий ответ на мою проблему.Я видел похожий вопрос, но у нас были разные результаты.Моя проблема в том, что у меня есть 2 контроллера.Первый контроллер имеет действие POST, которое я хочу вернуть CreatedAtRoute
действию GET внутри другого контроллера.Я протестировал действие GET в Postman, и оно работает, поэтому моя единственная проблема - заставить CreatedAtRoute
работать.
Мой первый контроллер:
[HttpPost]
public async Task<IActionResult> Submit(AssessmentAttemptVM attempt)
{
if (!ModelState.IsValid)
{
return BadRequest();
}
//Do database related stuff
await _context.SaveChangesAsync();
return CreatedAtRoute("GetAssessmentResult", new { id = studentAttempt.Id }, studentAttempt);
}
Мой второй контроллер:
[HttpGet("{id}", Name = "GetAssessmentResult")]
public async Task<ActionResult<AssessmentResultVM>> GetById(int id)
{
//Get my ViewModel -- This works if I try to access it without using the CreatedAtRoute method
return resultVM;
}
На рисунке ниже показано, что отвечает Почтальон, когда я пытаюсь отправить сообщение.Я убедился, что данные добавляются в базу данных, поэтому только метод CreatedAtRoute
- это единственное, что я могу себе представить, это не делает эту работу для меня ..
РЕДАКТИРОВАТЬ
Атрибуты маршрута контроллера:
[ApiController]
[Route("api/view/assessmentresult/")]
public class AssessmentResultsController: ControllerBase
{
[ApiController]
[Route("api/take/assessment")]
public class StudentAssessmentController : ControllerBase
{