【发布时间】:2018-12-07 21:56:37
【问题描述】:
这是我在 .Net Core 2.1 中构建的控制器示例。
[Route("api/TestApi")]
public class TestApiController: Controller
{
[HttpGet("{param1?}/{param2?}/{param3?}")]
//[HttpGet]
public ActionResult Get(int? param1 = null, DateTime? param2 = null, bool? param3 = null)
{
//Get data ...
}
}
我对这个设置的问题是我不能用空参数调用这个函数; 这种电话不起作用:http://localhost:9000/api/TestApi/null/null/true。它会给我一个错误,指出 null 不是 param1 的有效输入。
现在我不能依赖从查询字符串中读取参数(公司限制) 但我想指出,如果我改用 [HttpGet] 并使用 url 参数,它确实有效。
有什么想法吗?建议?问题? 一切都会受到欢迎。
提前致谢。
【问题讨论】:
-
你的网址不应该是localhost:9000/api/TestApi/null/null/true 吗?
-
可选(可为空)操作方法参数应位于查询字符串中。为什么贵公司会有这样的限制?
-
修复了网址。如果我使用查询字符串,这种情况确实有效。只是示例错误。 @Brad我不知道,这不是正确的问题,那么这样放置空参数是不可能的吗?
-
[HttpGet] 中的参数可选时,无需命名。如果它们存在,MVC 将从查询字符串中填充它们,否则它们将为空。当然,我问你的问题可能不是正确的问题,但你问公司可能是值得的。
-
好吧。我已经问过了,我知道他们在过去的几天里已经开始这样开发了。要问的重要问题是,我是否必须使用查询字符串输入才能使用空参数?
标签: asp.net-web-api asp.net-core http-get