我有一个带有get方法的web api控制器(TasksController),如:
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}
);
答案 0 :(得分:2)
您的第一个电话:
/api/tasks?startDate=2012%2F12%2F08&endDate=2012%2F12%2F15
是如何使用可选参数调用方法(即参数是可选的,因此您不指定它)。当您指定&#34;&amp; projectCode =&#34;在查询字符串中, 指定参数,并将其指定为 null 。由于字符串可以为空,因此api假定您想要以空值发送。如果您希望该方法使用空字符串运行,只需按照您之前的方式调用它,而不必发送该参数。