我已将路线设置为: 〔路线(" {ID} /用户/搜索/ {搜索}&#34)] 以及相关的行动是: SomeAction(int id,string text)
该服务具有以下功能。 对于id = {id}的资源,此资源的用户将获得与{search}字词(用户名,电子邮件等)匹配的用户。
{search}可以有一个值,所以服务只返回匹配的实体,或者没有值(空字符串或null),所以服务返回所有内容。
对于具有值的部分,它可以正常工作。 对于第二部分,我找不到设置匹配空字符串的get请求的东西。
我尝试了以下内容: 1 / users / search / null {search} =" null" 1 / users / search /与路线不匹配 1 /用户/搜索与路线不匹配
是否有人暗示如何做到这一点?
更新:我试图替换动作: SomeAction(int id,string text) 有: SomeAction(模型模型),其中模型是
public class ApplicationUserSearchModel
{
[Required]
public int Id { get; set; }
[Required(AllowEmptyStrings = true)]
public string MatchText { get; set; }
}
没有运气,因为我不知道要发送什么以便将网址与此匹配。
答案 0 :(得分:5)
您应该使用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
属性中的参数名称。