Asp.net web api 如何通过查询字符串将多个参数传递到webapi控制器

Asp.net web api 如何通过查询字符串将多个参数传递到webapi控制器,asp.net-web-api,Asp.net Web Api,我正在开发一个使用.NETRemoting进行通信的遗留系统。现在我想编写新的客户端和服务器端WebAPI代码来完成同样的工作。 下面是我正在处理的示例代码: public SearchResult Search(Condition condition,Sort sort,PageInfo pageInfo) { ...... } 我希望能够有一个web api动作,它的签名与从Uri中获取其值的签名相同,因此: [HttpGet()] public SearchResult Sear

我正在开发一个使用.NETRemoting进行通信的遗留系统。现在我想编写新的客户端和服务器端WebAPI代码来完成同样的工作。 下面是我正在处理的示例代码:

public SearchResult Search(Condition condition,Sort sort,PageInfo pageInfo)
{
......
}
我希望能够有一个web api动作,它的签名与从Uri中获取其值的签名相同,因此:

[HttpGet()]    
public SearchResult Search([FromUri]Condition condition,[FromUri]Sort sort,[FromUri]PageInfo pageInfo)
        {
        ......
        }
以下是我的问题:

  • 在web api中是否可能有这样的操作
  • 如果是,如何使用HttpClient传递这些参数

  • 您可以设置路由属性以接受任意多个参数

    [Route("/api/search/{condition}/{sort}/{pageInfo}")]
    [HttpGet]
    public HttpResponseMessage Search( string condition, string sort, string pageInfo) {
        ...
    }
    
    这意味着您的url将从
    /搜索?条件=测试和排序=第一个&页面信息=5

    /搜索/测试/第一次/5

    或者,将Condition、Sort和PageInfo对象捆绑到单个Json类中,并将此对象传递给路由:

    [Route("/api/search/{SortParams}")]
    [HttpGet]
    public HttpResponseMessage Search( object sortParams) {
        // deserialize sortParams into C# object structure
    }
    

    看看这个问题:

    我知道,但这意味着我应该为100个方法编写100条路由,将来可能会向这些方法添加一些参数,因此每次添加新参数时,我们都应该更改路由。另外需要注意的是:条件,Sort和PageInfo是对象而不是字符串。请参阅有关如何将Condition、Sort和PageInfo捆绑到单个Json对象中的更新,该对象可以传递到函数中。我想到了相同的解决方案,但我正在寻找一种更简单的方法(如果可能)。谢谢:)