【发布时间】:2015-07-28 05:22:41
【问题描述】:
我有一个 web api 控制器 (TasksController),它的 get 方法如下:
public IEnumerable<TimeUnitModel> Get(DateTime startDate, DateTime endDate, string projectCode = "")
如果我打电话
/api/tasks?startDate=2012%2F12%2F08&endDate=2012%2F12%2F15
返回正确的结果。
如果我打电话
/api/tasks?startDate=2012%2F12%2F08&endDate=2012%2F12%2F15&projectCode=
然后我得到:
{"projectCode.String":"A value is required but was not present in the request."}
知道为什么会这样吗? 谢谢。
编辑: 这是我在路线配置中的内容:
config.Routes.MapHttpRoute(
name: "tasks_get",
routeTemplate: "api/tasks",
defaults: new { controller = "tasks", projectCode = RouteParameter.Optional}
);
【问题讨论】:
-
@sirrocco 我以前在这个问题上看到过类似的行为stackoverflow.com/questions/12006524/…
-
附言。 projectCode 在查询字符串中而不是路径中,因此不是路由参数 - 因此您可以从配置中删除可选参数位。
-
谢谢马克。出于好奇,我还将看一下框架。是的,你说它不是路由参数是正确的,但我只需要尝试一下:)。