sir*_*cco 8 routing asp.net-web-api
我有一个web api控制器(TasksController),其get方法如下:
public IEnumerable<TimeUnitModel> Get(DateTime startDate, DateTime endDate, string projectCode = "")
Run Code Online (Sandbox Code Playgroud)
如果我打电话
/api/tasks?startDate=2012%2F12%2F08&endDate=2012%2F12%2F15
Run Code Online (Sandbox Code Playgroud)
返回正确的结果.
如果我打电话
/api/tasks?startDate=2012%2F12%2F08&endDate=2012%2F12%2F15&projectCode=
Run Code Online (Sandbox Code Playgroud)
然后我得到:
{"projectCode.String":"A value is required but was not present in the request."}
Run Code Online (Sandbox Code Playgroud)
知道为什么会这样吗?谢谢.
编辑: 这是我在路线配置中的内容:
config.Routes.MapHttpRoute(
name: "tasks_get",
routeTemplate: "api/tasks",
defaults: new { controller = "tasks", projectCode = RouteParameter.Optional}
);
Run Code Online (Sandbox Code Playgroud)
您的第一次调用:
/api/tasks?startDate=2012%2F12%2F08&endDate=2012%2F12%2F15
是如何使用可选参数调用方法(即参数是可选的,因此您没有指定它)。当您在查询字符串中指定“&projectCode=”时,您就是在指定参数,并且将其指定为null。由于字符串可为空,因此 api 假定您要发送空值。如果您希望该方法使用空字符串运行,只需按照之前的方式调用它,而无需发送该参数。
| 归档时间: |
|
| 查看次数: |
3865 次 |
| 最近记录: |