首页 > 解决方案 > 您可以使用基于约定的路由来声明采用多个参数的路由吗?

问题描述

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

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);

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

解决方案


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

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);`

推荐阅读