Tôi có một điều khiển web api (TasksController) với một phương pháp get như:Tham số tùy chọn WebApi - là bắt buộc?
public IEnumerable<TimeUnitModel> Get(DateTime startDate, DateTime endDate, string projectCode = "")
Nếu tôi gọi
/api/tasks?startDate=2012%2F12%2F08&endDate=2012%2F12%2F15
kết quả chính xác được trả về.
Nếu tôi gọi
/api/tasks?startDate=2012%2F12%2F08&endDate=2012%2F12%2F15&projectCode=
sau đó tôi nhận được:
{"projectCode.String":"A value is required but was not present in the request."}
Bất cứ ý tưởng tại sao điều này xảy ra? Cảm ơn.
Edit: Đây là những gì tôi có trong lộ trình cấu hình:
config.Routes.MapHttpRoute(
name: "tasks_get",
routeTemplate: "api/tasks",
defaults: new { controller = "tasks", projectCode = RouteParameter.Optional}
);
Bạn đã đặt UrlParameter.Optional trong RouteConfig của bạn cho tham số projectCode chưa? – dinukadev
Tôi đã thử cách này và không thể thấy những gì bạn thấy. Tôi thậm chí loại bỏ mặc định từ hành động và tất cả các công trình không có vấn đề. – Aliostad
@sirrocco Tôi đã thấy hành vi tương tự như vậy trước đây, về câu hỏi này http://stackoverflow.com/questions/12006524/why-does-modelstate-isvalid-fail-for-my-apicontroller-method-that-has-nullable -p/12622152 # 12622152 –