2012-03-26 31 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 } 
     );