我将路线设置为:
[Route(“{id}/users/search/{search}”)]
并且相关的 Action 是:
SomeAction(int id,字符串文本)

该服务具有以下功能。
对于ID = {id}的资源,此资源的用户将获得与{search}字词匹配的用户(用户名,电子邮件等)。

{search}可以具有一个值,因此该服务仅返回匹配的实体,或者不具有任何值(空字符串或null),因此该服务将返回所有内容。

对于具有值的零件,它可以正常工作。
对于第二部分,我找不到设置与空字符串匹配的get请求的内容。

我尝试了以下方法:
1/users/search/null {search} =“null”
1/用户/搜索/与路由不匹配
1/用户/搜索与路由不匹配

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

更新:我试图替换操作:
SomeAction(int id,字符串文本)
和:
SomeAction(模型模型),其中模型是

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

运气不好,因为我不知道要发送什么来匹配该URL。

最佳答案

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

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

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

您的路线定义和操作中的参数名称不匹配,这导致了您的问题。
[Route("{id}/users/search/{search}")]
public HttpResponseMessage Search(int id, string text)

您应该将操作中的string参数从text更新为search,以匹配Route属性中的参数名称。

10-01 23:33
查看更多