Asp.net web api 如何通过查询字符串将多个参数传递到webapi控制器
我正在开发一个使用.NETRemoting进行通信的遗留系统。现在我想编写新的客户端和服务器端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
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)
{
......
}
以下是我的问题:
您可以设置路由属性以接受任意多个参数
[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对象中的更新,该对象可以传递到函数中。我想到了相同的解决方案,但我正在寻找一种更简单的方法(如果可能)。谢谢:)