C# WebAPI路由到具有多个可选参数的函数
我在WebAPI控制器中将以下函数头声明为路由:C# WebAPI路由到具有多个可选参数的函数,c#,.net,asp.net-web-api,C#,.net,Asp.net Web Api,我在WebAPI控制器中将以下函数头声明为路由: [Route("page/{page}/{cityfilter?}/{statefilter?}/{organizationfilter?}")] public IEnumerable<Contact> GetContact(int page, string cityfilter = null, string statefilter = null, string organizationfilter = null) { ..
[Route("page/{page}/{cityfilter?}/{statefilter?}/{organizationfilter?}")]
public IEnumerable<Contact> GetContact(int page, string cityfilter = null, string statefilter = null, string organizationfilter = null)
{
...
}
[路由(“page/{page}/{cityfilter?}/{statefilter?}/{organizationfilter?}”)]
public IEnumerable GetContact(int页,字符串cityfilter=null,字符串statefilter=null,字符串organizationfilter=null)
{
...
}
这里的问题是,我希望每个参数都是可选的,因此我希望发出一个请求,该请求包含一个cityfilter、一个statefilter、一个organization filter,其中两个或三个,然后通过该函数进行处理和路由,但我不知道如何构建URI,例如,此路由仅适用于statefilter
如何在WebAPI中实现这一点?例如,我应该如何从Jquery Ajax调用调用资源地址
多谢各位 由于参数是简单类型(字符串),因此可以从路由数据(URL路径)或查询字符串绑定它们。因此,您可以将可选参数移动到查询字符串中,并使路由仅与
页面
参数匹配
[路由(“page/{page}”)]
下面是一个URL示例,可用于从浏览器或AJAX调用调用此操作:
www.yourapidomain.com/page/1?cityfilter=aCityFilterString&statefilter=astefilterstring&organizationfilter=anOrganizationFilter
当然,您可以省略任何可选参数或更改其顺序
动作方法签名可以保持在示例中的状态
有关更多信息,您可以查看。url路径中是否一定要有可选参数?将它们作为querystring参数有问题吗?我可以将调用设置为querystring没有问题,但是我应该如何为此更改WEBAPI函数的头?谢谢