2012-03-26 78 views
1

您好我有哪些需要多次发布一个API控制器:如何写map /路由多个邮政

一个用于保存/更新:

public Order PostOrder(Order order) 
{ 

} 

而且,另一个用于搜索顺序

public IQueryable<Order> SearchWithParameter(SearchOrderParameter searchParameter) 
{ 

} 

我已经在Global.asax中

routes.MapHttpRoute(
      name: "SearchWithParameter", 
      routeTemplate: "api/{controller}/{action}/{searchParameter}", 
      defaults: new { action = "post" } 
     ); 
012添加以下路线方法

JS中,我叫它为:

var SearchOrderParameter = new Object(); 
SearchOrderParameter.OrderID = 1197; 
$.ajax({ 
    url: "http://localhost:9003/api/orders/SearchWithParameter", 
    data: SearchOrderParameter, 
    type: "Post", 
    dataType: "json", 
    success: function (value) { 
     alert(value); 
    }, 
    error: function (jqXHR, textStatus, errorThrown) { 
     alert(textStatus); 
    } 
}); 

但每次这个方法调用PostOrder时间。请指导我,我错过了什么,以便它会致电SearchWithParameter

回答

1

默认情况下,HTTP操作映射到以HTTP方法名称开头的C#函数。因此,一个HTTP POST将被映射到Post ....()方法,而不会被搜索....()方法。您可以添加一个HttpPost属性以使SearchWithParameter()方法也可以在post中使用。

+0

感谢莫里斯,请您提供一些示例代码。 – 2012-03-27 16:11:14

3

尝试使用这些路线...

routes.MapHttpRoute(
      name: "ApiAction", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional }, 
      constraints: new { action = @"^[A-Za-z]" } 
     ); 

     routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     );