(function (appAN) {
'use strict';
appAN.controller('InfoController', function ($scope, $http) {
$scope.model = {
firstname: "john",
lastname: "doe",
company: 'IBM',
}
$scope.addbtn = function () {
var info = {
firstname: $scope.model.firstname,
lastname: $scope.model.lastname,
company: $scope.model.company
}
var url = "Info/AddInfo";
var data = JSON.stringify(info);
$http.post(url, data).success(function (data) {
alert(success);
});
}
});
}(angular.module('testd',[])));
并在c#代码中这样:
namespace testdemo.Controllers
{
public class InfoController : ApiController
{
[HttpPost]
public IHttpActionResult AddInfo([FromBody]InfoClass info)
{
object o = new object();
return Json(o);
}
}
public class InfoClass
{
public string firstname { get; set; }
public string lastname { get; set; }
public string company { get; set; }
}
}
现在的问题是:我无法在我的c#方法中获取值,突破点也没有在'AddInfo'方法中命中。
无法加载资源:服务器响应状态为404 (未找到)http://localhost:63498/Info/AddInfo
我能够看到值,直到var data = JSON.stringify(info);
我的代码出了什么问题?
我的路由是这样的:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
}
}
答案 0 :(得分:1)
您应该在App_Start / WebApiConfig.cs中注册ApiControllers的路由。像这样:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
然后像这样使用网址:
var url = "/api/Info/AddInfo";
答案 1 :(得分:0)
从代码中删除JSON.stringify并直接在$ http.post中传递info对象。 Angular将为您进行字符串化:)
您需要为后端注释您的帖子处理程序。
在RouteConfig中添加帖子URL
答案 2 :(得分:0)
确保您在webapiconfig.cs中有以下代码段来调用webapi。
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
在" api / Info / AddInfo "
中提及api url,如下所示