您可以使用基于约定的路由来声明采用多个参数的路由吗?

时间:2019-04-18 18:48:18

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

我的意思是,我有几条采用多个参数的路由:

api/sockId/sockColor
api/sockId/sockBrand
api/sockId/sockSize

我可以为所有这些声明一条路线吗?我在想像这样的东西:

config.Routes.MapHttpRoute(
    name: "TwoArgumentGeneralRoute",
    routeTemplate: "api/{controller}/{action}/{id1}/{id2}"
);

当然需要与我的操作方法相匹配:

public Task PostSockColor(int sockId, int sockColor);
public Task PostSockBrand(int sockId, int sockBrand);
public Task PostSockSize(int sockId, int sockSize);

1 个答案:

答案 0 :(得分:0)

您应该能够,尽管我认为参数名称需要与路由匹配。
因此,您必须将路线设置为:

routeTemplate: "api/{controller}/{action}/{sockId}/{variant}"

然后,您的方法仅在{action}(方法名)上有所不同:

public Task PostSockColor(int sockId, int variant);
public Task PostSockBrand(int sockId, int variant);
public Task PostSockSize(int sockId, int variant);`