您好我有一个需要多个POST的API控制器:
一个用于保存/更新:
public Order PostOrder(Order order)
{
}
另一个搜索订单
public IQueryable<Order> SearchWithParameter(SearchOrderParameter searchParameter)
{
}
我在Global.asax中添加了以下Route方法
routes.MapHttpRoute(
name: "SearchWithParameter",
routeTemplate: "api/{controller}/{action}/{searchParameter}",
defaults: new { action = "post" }
);
在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
。
答案 0 :(得分: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 }
);
答案 1 :(得分:1)
默认情况下,HTTP操作映射到以HTTP方法名称开头的C#函数。因此,HTTP POST将被映射到Post ....()方法,而不会映射到Search ....()方法。您可以添加HttpPost
属性以使SearchWithParameter()方法也适用于post。