.NET 6.0 Web Api,传递空字符串作为参数值

Lor*_*ini 5 c# asp.net-web-api .net-6.0

我开始使用 .NET 6 Web API。我写了一个非常简单的控制器:

[Route("[controller]")]
[ApiController]
public class TestController : ControllerBase
{
  [HttpGet,Route("sample")]
  public IActionResult ReturnSample(string ParameterOne, string ParameterTwo)
  {
    [... do something ...]
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是所有参数都是强制性的。

网址:https://<server>/test/sample?ParameterOne=Value&ParameterTwo=Value

工作正常,一切OK

网址:https://<server>/test/sample?ParameterOne=Value&ParameterTwo=

错误:

{
  "type":"https://tools.ietf.org/html/rfc7231#section-6.5.1",
  "title":"One or more validation errors occurred.",
  "status":400,
  "traceId":"00-dc73d9983b53750d2073c48bec522c70-98fe251af1accccf00",
  "errors":{"ParameterTwo":["The ParameterTwo field is required."]}}
Run Code Online (Sandbox Code Playgroud)

如何允许空值作为参数的有效值?

谢谢洛伦佐

Gur*_*ron 1

您可以设置第二个参数的默认值:

[HttpGet,Route("sample")]
public IActionResult ReturnSample(string ParameterOne, string? ParameterTwo = null)
{
   // ...
}
Run Code Online (Sandbox Code Playgroud)