8

我有一个 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}
        );
4

1 回答 1

3

您的第一次调用: /api/tasks?startDate=2012%2F12%2F08&endDate=2012%2F12%2F15 您如何使用可选参数调用方法(即参数是可选的,因此您没有指定它)。当您在查询字符串中指定 "&projectCode=" 时,您正在指定参数,并且您将其指定为null。由于字符串可以为空,因此 api 假定您发送一个空值。如果您希望该方法使用空字符串运行,只需按照您之前所做的方式调用它,而无需发送该参数。

于 2015-07-27T21:22:41.763 回答