Hãy nói tôi có hai phương pháp trong MVC điều khiển API 4 Web:Thông số URL trong MVC 4 Web API
public IQueryable<A> Get() {}
Và
public A Get(int id) {}
Và con đường sau:
routes.MapHttpRoute(
name: "Default",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Điều này hoạt động như mong đợi. Thêm một thêm một tham số, ví dụ:
public IQueryable<A> Get(int p) {}
public A Get(int id, int p) {}
dẫn đến tình trạng khi MVC trả 404 cho các yêu cầu sau:
GET /controller?p=100
Hoặc
GET /controller/1?p=100
với thông điệp "Không có hành động đã được tìm thấy trên bộ điều khiển 'bộ điều khiển' phù hợp với yêu cầu "
Tôi hy vọng rằng sự ngang bằng URL ters nên được dây bởi MVC mà không có vấn đề, nhưng nó không phải là sự thật. Đây có phải là lỗi hoặc sự hiểu lầm của tôi về cách bản đồ MVC yêu cầu hành động không?
[Đây] (http: // diễn đàn. asp.net/t/1774984.aspx/2/10) cùng một vấn đề được mô tả nhưng không có kết luận là hành vi này dự kiến –
PS. do cùng một cú pháp OData trong URL sẽ không hoạt động nếu có nhiều hơn một phương thức được ánh xạ tới Động từ HTTP. –
Bạn có thể hiển thị tuyến đường thực tế của bạn và tất cả các phương pháp và chữ ký trong bộ điều khiển của bạn không? –