Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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# MVCWebAPI向方法传递ID和POST数据_C#_Asp.net Web Api - Fatal编程技术网

C# MVCWebAPI向方法传递ID和POST数据

C# MVCWebAPI向方法传递ID和POST数据,c#,asp.net-web-api,C#,Asp.net Web Api,我想要一个PUT方法,我可以用它调用: localhost/api/editRole/id and pass post-data. 我的路线如下所示: routeTemplate: "api/{controller}/{action}/{id}" 然后我尝试了以下方法: [HttpPut] public bool editRole(int id, roleDTO postdata) { return dal.editRole(postdata);

我想要一个PUT方法,我可以用它调用:

localhost/api/editRole/id and pass post-data.
我的路线如下所示:

routeTemplate: "api/{controller}/{action}/{id}"
然后我尝试了以下方法:

    [HttpPut]
    public bool editRole(int id, roleDTO postdata)
    {
        return dal.editRole(postdata);
    }
但是如果我试图用一些post数据调用
localhost/api/editRole/2
,我得到的
请求的资源不支持http方法“PUT


我做错什么了?

您应该用
[FromUri]
[FromBody]
属性相应地标记参数:

[HttpPut]
public bool editRole([FromUri] int id, [FromBody] roleDTO postdata)
{
    return dal.editRole(postdata);
}

此外,您的url
localhost/api/editRole/2
应该类似于
localhost/api/{controllerName}/2

您应该使用
[FromUri]
[FromBody]
属性相应地标记您的参数:

[HttpPut]
public bool editRole([FromUri] int id, [FromBody] roleDTO postdata)
{
    return dal.editRole(postdata);
}

另外,您的url
localhost/api/editRole/2
应该类似于
localhost/api/{controllerName}/2

您的控制器名称在url localhost/api/editRole/2中的什么位置?@Vermillion检查此答案:您的控制器名称在url localhost/api/editRole/2中的什么位置?@Vermillion检查此答案: