C# 使用ASP.NET Web API删除具有多个可选参数的

C# 使用ASP.NET Web API删除具有多个可选参数的,c#,asp.net,asp.net-web-api,asp.net-web-api2,asp.net-web-api-routing,C#,Asp.net,Asp.net Web Api,Asp.net Web Api2,Asp.net Web Api Routing,我在Web API控制器中有一个DELETE操作方法,它依赖于多个可为null的参数 以下是我目前的做法: [HttpDelete("{id}?productId={productId}&categoryId={categoryId}")] public void Delete(int Id, int? productId = null, int? categoryId = null) { _ppManager.Delete(Id, productId, categoryId);

我在Web API控制器中有一个DELETE操作方法,它依赖于多个可为null的参数

以下是我目前的做法:

[HttpDelete("{id}?productId={productId}&categoryId={categoryId}")]
public void Delete(int Id, int? productId = null, int? categoryId = null)
{
    _ppManager.Delete(Id, productId, categoryId);
}

这是正确的吗?我认为DELETE比POST更类似于GET,因此我使用了查询字符串技术,因为它们需要可以为null。

从中可以看出,URL参数会自动路由到按名称匹配的操作参数,因此您可以这样放置:

[HttpDelete("{id:int}")]
public void Delete(int Id, int? productId = null, int? categoryId = null)
{
    _ppManager.Delete(Id, productId, categoryId);
}

匹配的URL参数将自动路由。

您对此有什么特别的问题吗?请更好地描述您的需求。您不应该在路由中放置查询字符串参数;它们是自动处理的。