В большинстве моих контроллеров (API) (. net core 3.1) я вызываю функцию и использую ответ этой функции, чтобы затем создать соответствующий результат действия. Это выглядит примерно так:
[HttpPost("{id}/read")]
public async Task<IActionResult> ReadMessage(Guid id)
{
ResponseApiModel r = await _messageData.ReadOneMessage(id);
if (r.ApiResponse != ApiResponse.AllGood)
{
if (r.ApiResponse == ApiResponse.NotFound)
return NotFound(r);
else
return BadRequest(r);
}
}
Дело в том, что оператор if в основном повторяется в нескольких действиях на всех моих контроллерах. Я хотел бы иметь возможность переместить этот код в фильтр действий. Но не могу понять, как это сделать. В конце концов, как мне передать ResponeApiModel в фильтр.
Я уже переместил весь другой общий код в фильтр, поэтому все проверки подлинности, а также исключения обрабатываются в фильтрах. Но я не могу понять, как это сделать.