如何在WebApi中传递字符串类型的可选query string查询参数
可选QueryString参数配置解决方案
1 修正参数定义语法
你之前写的string?Place=null存在语法错误,参数类型、参数名、赋值符号之间需要保留空格,可选参数需要显式声明默认值,不同场景的正确写法如下:
- 未开启C#可空引用类型:
public IHttpActionResult Test([FromUri] string Name, string Place = null)
- 已开启C#可空引用类型(C# 8及以上版本支持):
public IHttpActionResult Test([FromUri] string Name, string? Place = null)
2 异常排查
如果按照上述写法修改后仍不生效,检查以下配置:
- 确认路由模板中没有强制绑定Place参数,非必填参数不需要写入路由规则,仅在方法参数中声明即可
- 如果是.NET Framework版本的Web API 2,优先使用
string Place = null的写法,该版本对可空引用类型语法的兼容性较差
3 兼容兜底方案
如果框架版本限制无法使用默认参数,可以在方法内部做默认值赋值:
public IHttpActionResult Test([FromUri] string Name, string Place) { // 不传参数时Place默认值为null,手动赋值默认值即可 Place ??= "自定义默认值"; // 后续业务逻辑 }
内容的提问来源于stack exchange,提问作者mRhNs13
相关产品推荐
相关产品推荐

