如何在webapi c#中配置路由,以便可以使用任何变量名代替{id}

时间:2019-07-03 10:36:15

标签: c# asp.net-web-api routing

我已经在WebApiConfig.cs

中配置了基于约定的路由
config.Routes.MapHttpRoute(
name: "DataDictionaryApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id= RouteParameter.Optional }
);

在此api端点上正常工作。

[ActionName("DeleteDataDictionary")]
public void DeleteDataDictionary(int id)
{
    //my code
}

但是我想对变量使用任何有意义的名称而不是id。
例如:

[ActionName("DeleteDataDictionary")]
public void DeleteDataDictionary(int dataDictionaryId)
{
    //my code
}

[ActionName("DeleteMenu")]
public void DeleteMenu(int menuId)
{
    //my code
}

问题在于它仅在我将参数名称指定为id时有效。

2 个答案:

答案 0 :(得分:0)

改为使用属性路由。

[Route("api/delete-dictionary/{dataDictionaryId:int}")]
public void DeleteDataDictionary(int dataDictionaryId)
{
    //my code
}

并发送如下请求,

/api/delete-dictionary/1

答案 1 :(得分:0)

尝试使用FromRouteAttribute

示例:

[ActionName("DeleteDataDictionary")]
public void DeleteDataDictionary( [FromRoute("id")] int dataDictionaryId)
{
    // your code
}