【发布时间】:2017-10-06 06:32:01
【问题描述】:
请检查我的 WebApiConfig、API 控制器和角度服务。第一条路线工作正常,但第二条和第三条没有被 angularjs 调用。虽然 web api 路由没问题。
--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/{controller}/{action}/{param1}/{param2}:param1和param2应该出现在 URL 中。但是在您的 Http POST 中,url 是api/ApiAcademic/InsertAcademicInfo并且参数在帖子正文中,所以这不起作用!您能否包括控制器的其余部分并说明哪些操作有效,哪些无效? -
Api/ApiAcademic/Details(int param) -- 参数(在第一条路线上工作正常) Api/ApiAcademic/InsertAcademicInfo(AcademicInformation[] param1, AcademicResult[] param2) -- 不工作跨度>
标签: c# asp.net angularjs asp.net-web-api asp.net-web-api-routing