如果更改参数名称,则使用angularjs调用PUT或POST方法将停止工作

时间:2014-09-24 17:26:36

标签: angularjs asp.net-web-api

我的控制器类中有2个方法(ItensController.cs):

public void Put(int id, [FromBody]Item value)
{
}

[ActionName("UpdateItemFees")]
[HttpPost]
public void UpdateItemFees(int id, [FromBody]Item value)
{         
}

我的客户电话是:

$http.put('/api/Itens/Put/' + $scope.osID, item)
$http.post('/api/Itens/UpdateItemFees/' + $scope.osID, item)

这很好用。但是,如果我更改控制器类中的参数名称,它将停止工作:

public void Put(int osID, [FromBody]Item value)
{
}

[ActionName("UpdateItemFees")]
[HttpPost]
public void UpdateItemFees(int osID, [FromBody]Item value)
{         
}

错误是:

未找到与请求URI匹配的HTTP资源

'http://local/api/Itens/Put/3443'.

未找到与请求URI匹配的HTTP资源

'http://local/api/Itens/UpdateItemFees/3443'.

Global.asax中

protected void Application_Start(object sender, EventArgs e)
{
   RouteTable.Routes.MapHttpRoute(
   name: "DefaultApi",
   routeTemplate: "api/{controller}/{action}/{id}",
   defaults: new { id = System.Web.Http.RouteParameter.Optional }
   );
}

此参数的名称更改有什么问题?

Get等其他方法正常工作。

问候。

1 个答案:

答案 0 :(得分:0)

尝试添加路由属性:

[Route("api/Itens/{osID}")]

Asp.net MVC具有默认参数名称的内置路由,id是其中一个参数名称。