У меня уникальная ситуация, когда мне нужно получить DepartmentId из [FromRoute]
или [FromQuery]
или [FromBody]
. Это странно, так как я не могу разорвать свои публичные контракты API и не могу ничего с этим поделать. Также я не могу изменить бизнес-контракты, которые вызываются из контроллера, так что я не могу передать DepartmentId по конвейеру.
Я вижу, что могу ввести IHttpContextAccessor
и получить IHttpContextAccessor.HttpContext
. Я смог получить DepartmentId для [FromQuery]
, как показано ниже:
request.QueryString.Value.Replace("?", "")
.Split("&")
.FirstOrDefault(x => x.Contains("departmentId"))
?.Split("=")[1];
Я получаю [FromRoute]
параметр, как показано ниже;
var departmentId = 0;
var match = Regex.Match(request.Path, "Department/\\d+");
if (match.Success && match.Groups.Any())
{
int.TryParse(match.Groups[0].Value.Replace("Department/", ""), out departmentId);
}
Я не знаю, как мне получить DepartmentId от сложного объекта [FromBody]
. Но я знаю, что все объекты запроса, используемые в [HttpPost]
, наследуются от класса Department
, который имеет DepartmentId
.
Любая помощь приветствуется ....