Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.net webApi中删除不带id参数的请求_C#_Angular_Asp.net Web Api - Fatal编程技术网

C# 在.net webApi中删除不带id参数的请求

C# 在.net webApi中删除不带id参数的请求,c#,angular,asp.net-web-api,C#,Angular,Asp.net Web Api,我有下面这样的.net核心WebApi。而且它工作得很好。但是,当我编写[HttpDelete]而不是[HttpDelete({id}”)]时,它就不起作用了。原因是什么 我的网址: [ApiController] [路由(“api/[controller]/[action]”) 公共班级学生控制员:ControllerBase { //[HttpDelete]//这不起作用 [HttpDelete(“{id}”)]///这是有效的 公共异步任务DeleteStudent(int id) { 返

我有下面这样的.net核心WebApi。而且它工作得很好。但是,当我编写
[HttpDelete]
而不是
[HttpDelete({id}”)]
时,它就不起作用了。原因是什么

我的网址:

[ApiController]
[路由(“api/[controller]/[action]”)
公共班级学生控制员:ControllerBase
{
//[HttpDelete]//这不起作用
[HttpDelete(“{id}”)]///这是有效的
公共异步任务DeleteStudent(int id)
{
返回等待学生服务。删除学生(id);
}
}

你必须告诉路由器你的api签名。。现在,通过将
[HttpDelete({id}”)]
替换为
[HttpDelete]
您的签名将成为
api/[controller]/[action]
,因此您的路由器将忽略该签名之后的任何内容


如果希望将自定义路由保留为
[HttpDelete]
,则可以定义自定义路由,其中还将指定id作为参数。

如果不使用
{id}
路由模板参数,则填充该值的唯一其他方法是通过查询字符串

http://localhost:5004/api/Student/DeleteStudent?id=23 
路由表将querystring参数与action参数匹配以进行匹配


无论哪种方式,都需要提供
id
,以知道调用哪个操作和删除哪个记录。

MVC如何知道从何处获取id?为什么要删除路由模板?我只发送一个参数。我想,它可以在这个网站上知道@PanagiotisKanavosForexample@PanagiotisKanavos他没有使用id参数。没有id route template参数,只有通过查询字符串(即
http://localhost:5004/api/Student/DeleteStudent?id=23
)。无论哪种方式,都需要提供id来知道删除哪个记录谢谢@Nkosi。我想,这就是我要找的。成功了。你能写下答案吗?我会记下答案。谢谢@MichelHanna。恩科西的回答解决了我的问题。
http://localhost:5004/api/Student/DeleteStudent?id=23