【发布时间】:2020-07-02 22:25:27
【问题描述】:
我一直在寻找这个问题,但还没有找到答案。简而言之,我有一个使用 angular spa 模板的 .net 核心 Web 应用程序。我有多个充当 API 的控制器,通常一切正常。但是在以下情况下,我很好奇是否有另一种方法可以在不重载操作的情况下完成发送空 id。
这是我所拥有的并且按预期工作:
[HttpGet("[action]")]
public IActionResult SayHello()
{
return BadRequest(new
{
error = "Name registered as null.",
message = "No value(null) was provided to the api resource 'SayHello' which resulted in no action taken."
});
}
[HttpGet("[action]/{name}")]
public IActionResult SayHello(string name)
{
return Ok($"Hello {name}");
}
我想知道的是,我可以在不超载的情况下完成这个吗?例如,只需这样做:
[HttpGet("[action]/{name}")]
public IActionResult SayHello(string name)
{
if (name == null)
{
return BadRequest(new
{
error = "Name registered as null.",
message = "No value(null) was provided to the api resource 'SayHello' which resulted in no action taken."
});
}
return Ok($"Hello {name}");
}
目前,当我尝试这样做时,null id 路由将被视为不存在,并且该路由将被传递给 angular 来处理。重载是实现这一目标的首选和唯一方法吗?还是有别的办法?
【问题讨论】:
-
有没有办法将路由参数指定为可选?
标签: c# asp.net-mvc .net-core routes spa-template