Web Api 2空字符串参数GET

Man*_*zas 7 routes asp.net-web-api

我已将路由设置为:[Route("{id}/users/search/{search}")],相关操作为:SomeAction(int id,string text)

该服务具有以下功能.对于id = {id}的资源,此资源的用户获取与{search}术语(用户名,电子邮件等)匹配的用户.

{search}可以有一个值,因此服务只返回匹配的实体或没有值(空字符串或null),因此服务返回所有内容.

对于具有值的部分,它可以正常工作.对于第二部分,我找不到设置匹配空字符串的get请求的东西.

我尝试了以下:1/users/search/null {search} ="null"1/users/search /不匹配路由1/users/search不匹配路由

谁有人暗示如何做到这一点?

更新:我试图替换动作:SomeAction(int id,string text)with:So​​meAction(Model model)其中model是

public class ApplicationUserSearchModel
{
    [Required]
    public int Id { get; set; }
    [Required(AllowEmptyStrings = true)]
    public string MatchText { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

没有运气,因为我不知道要发送什么,以匹配这个网址.

mat*_*404 5

您应该在路径中标记search参数以?将其标记为可选,并null在操作中将其设置为默认值.

[Route("{id}/users/search/{search?}")]
public HttpResponseMessage Search(int id, string search = null)    
Run Code Online (Sandbox Code Playgroud)

我原本以为路由/动作参数名称是问题,但我不正确.这是以前的答案:

路径定义中的参数名称与您的操作不匹配,这会导致您的问题.

[Route("{id}/users/search/{search}")]
public HttpResponseMessage Search(int id, string text)
Run Code Online (Sandbox Code Playgroud)

您应该string将操作中的参数更新textsearch,以匹配Route属性中的参数名称.