小编Muh*_*ved的帖子

复杂类型作为 Web api 操作中的可选参数

我需要在“Web API 控制器操作”中将复杂类型参数设置为可选,以便空值的操作过滤器可以通过检查参数的 property 来忽略它IsOptional。我收到此错误:

“FormatterParameterBinding”不支持可选参数“errorCode”。

我有一个这样的控制器:

[Route("api/v1/Temp/{number}/{errorCode?}/{value?}")]
[HttpGet]
public IHttpActionResult Temp(int number, ErrorDetail errorCode = null, string value = null)
{
    return Ok("good");
}
Run Code Online (Sandbox Code Playgroud)

并让 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());
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使复杂类型成为可选参数吗?如何忽略动作过滤器中的复杂类型可选参数?

c# optional-arguments asp.net-web-api2

5
推荐指数
1
解决办法
3064
查看次数

标签 统计

asp.net-web-api2 ×1

c# ×1

optional-arguments ×1