Как мне получить CreatedAtAction для добавления параметра запроса?

#c# #asp.net-core

#c# #asp.net-core

Вопрос:

Есть ли способ CreatedAtAction добавить параметр запроса к Location заголовку, который генерируется?

Используемый мной метод action объявлен как таковой:

 [HttpGet("{candidateId:guid}")]
public async Task<ActionResult> Get(Guid candidateId, [FromQuery][Required]string siteId)
  

и я указываю на это при вызове CreatedAtAction :

 var model = RegisterModel(/* ... */);

return CreatedAtAction(nameof(Get), new { candidateId = model.CandidateId }, model));
  

siteId абсолютно необходимо для работы этого метода action, и именно поэтому я хотел бы включить его в URL, возвращаемый в Location заголовке: я хотел бы, чтобы мой URL был рабочим.

Ответ №1:

Вы можете добавить siteId свойство к создаваемому вами анонимному объекту — все, что не указано в самом маршруте, автоматически устанавливается в качестве параметра строки запроса:

 return CreatedAtAction(
    nameof(Get),
    new { candidateId = model.CandidateId, siteId = model.SiteId },
    model));