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:SomeAction(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)
没有运气,因为我不知道要发送什么,以匹配这个网址.
您应该在路径中标记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将操作中的参数更新text为search,以匹配Route属性中的参数名称.
| 归档时间: |
|
| 查看次数: |
6400 次 |
| 最近记录: |