我将路线设置为:
[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
属性中的参数名称。