Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WebAPI路由到具有多个可选参数的函数_C#_.net_Asp.net Web Api - Fatal编程技术网

C# 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) { ..

我在WebAPI控制器中将以下函数头声明为路由:

[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函数的头?谢谢