Мне нужно сделать параметр сложного типа необязательным в «Действии контроллера веб-API», чтобы мой фильтр действий для нулевых значений мог игнорировать его, проверяя свойство аргумента IsOptional
. Я получаю эту ошибку:
Необязательный параметр errorCode не поддерживается FormatterParameterBinding.
У меня есть такой контроллер:
[Route("api/v1/Temp/{number}/{errorCode?}/{value?}")]
[HttpGet]
public IHttpActionResult Temp(int number, ErrorDetail errorCode = null, string value = null)
{
return Ok("good");
}
и иметь actionFilter для проверки нулевых значений, например:
public override void OnActionExecuting(HttpActionContext actionContext)
{
var parameters = actionContext.ActionDescriptor.GetParameters();
foreach (var param in parameters)
{
if (param.IsOptional)
continue;
object value = null;
if (actionContext.ActionArguments.ContainsKey(param.ParameterName))
value = actionContext.ActionArguments[param.ParameterName];
if (value == null)
throw new GasException((ulong)ErrorCodes.NullValue, ErrorCodes.NullValue.GetDescription());
}
}
Есть ли способ сделать сложный тип необязательным параметром? Как игнорировать дополнительные параметры сложного типа в фильтре действий?