請檢查我的WebApiConfig,API控制器和角度服務。第一條路線工作正常,但第二和第三條不是由angularjs調用。雖然web api路線沒問題。Web API路由配置沒有被多個參數的angularjs觸發
--WebApiConfig
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Formatters.Remove(config.Formatters.XmlFormatter);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{param}",
defaults: new { param = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "Api2",
routeTemplate: "api/{controller}/{action}/{param1}/{param2}",
defaults: new { param1 = RouteParameter.Optional, param2 = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "Api3",
routeTemplate: "api/{controller}/{action}/{param1}/{param2}/{param3}",
defaults: new { param1 = RouteParameter.Optional, param2 = RouteParameter.Optional, param3 = RouteParameter.Optional }
);
}
}
--Web API控制器
[HttpPost]
public IHttpActionResult InsertAcademicInfo(AcademicInformation[] param1, AcademicResult[] param2)
{
return Ok(_academic.InsertAcademicInformation(param1, param2).Data);
}
--Angular服務
mainApp.factory('AcademicServices', ['$http', '$rootScope', function ($http, $rootScope) {
return {
Save: function (academic, results) {
return $http({
url: '/Api/ApiAcademic/InsertAcademicInfo',
method: 'POST',
data: { param1: academic, param2: results },
async: false
});
},
};
}]);
根據你的路線'API/{控制器}/{行動}/{參數1}/{參數2}' :'param1'和'param2'應該存在於URL中。然而,在你的Http POST中,url是'api/ApiAcademic/InsertAcademicInfo',並且這些參數在post body中,所以這不起作用!你可以包括你的控制器的其餘部分,並提到哪些行動工作,哪些不行? – degant
Api/ApiAcademic/Details(int param) - param(其中第一個路由正常工作) Api/ApiAcademic/InsertAcademicInfo(AcademicInformation [] param1,AcademicResult [] param2) - 不工作 – sebu