Asp.net web api 属性路由-可选参数不工作?
据 使用属性路由时,可以通过添加问号(?)来获得可选参数。但是,它不适合我(ASP.NET Web API 5)Asp.net web api 属性路由-可选参数不工作?,asp.net-web-api,attributerouting,Asp.net Web Api,Attributerouting,据 使用属性路由时,可以通过添加问号(?)来获得可选参数。但是,它不适合我(ASP.NET Web API 5) [Route(“staff/{featureID?}”)] 公共列表GetStaff(int?featureID){ List staff=null; 返回工作人员; } 如果我使用/staff/1等,效果很好,如果我使用/staff我会得到通常的: “未找到与请求URI匹配的HTTP资源…” “在匹配的控制器上找不到任何操作 请求。” 我是不是漏掉了一封推荐信?还是做错了?如果我
[Route(“staff/{featureID?}”)]
公共列表GetStaff(int?featureID){
List staff=null;
返回工作人员;
}
如果我使用/staff/1
等,效果很好,如果我使用/staff
我会得到通常的:
“未找到与请求URI匹配的HTTP资源…”
“在匹配的控制器上找不到任何操作
请求。”
我是不是漏掉了一封推荐信?还是做错了?如果我做了:
[路由(“staff/{featureID=null}”)]
而不是
[路由(“staff/{featureID?}”)]
它起作用了
从技术上讲,这不能回答我的问题,但它让我工作 我也遇到了同样的问题,解决方法也有点不同。然而,它仍然没有像那篇博文中所说的那样对我有效。我没有在路由定义中添加默认参数值,而是将其添加到函数定义中 为了使我的示例正常工作,我必须这样做,因为我使用的是
string
而不是int
,并且在路由定义中添加默认值null
导致我的函数参数具有字符串值“null”
[Route(“staff/{featureID?}”)]
公共列表GetStaff(int?featureID=null){
List staff=null;
返回工作人员;
}
这是因为您始终必须为可选参数设置默认值,即使默认值为空。这就是为什么这样做的原因:
[Route("staff/{featureID=null}")]
从这一点来看,这是非常有意义的,因为正常方法上的可选参数也是这样做的,对“null”部分也有很好的了解,那么为什么要使用“?”字符功能呢?
[Route("staff/{featureID?}")]
public List<string> GetStaff(int? featureID = null) {
List<string> staff = null;
return staff;
}
[Route("staff/{featureID=null}")]