[英]http.post Simple object from angularJS to c# Web api either null or all properties are null
[英]Angular $http.post() to C# Web API Controller
我可以通過調用Web API Controller函數使$ http.get()正常工作,但是當我嘗試執行post()時,它將給出404。
角度:
// call API to update
$http.post("api/Store/UpdateField", $httpParamSerializer({ ID: rowEntity.ID, columnName: colDef.name, value: newValue}))
.then(function (response) {
},
function (error, status) {
});
C#:
[RoutePrefix("api/Store")]
public class StoreController : ApiController
[Route("UpdateField")]
[HttpPost]
public async Task<bool> UpdateField(int ID, string columnName, string value)
{ // stuff here }
}
// routes
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "API1",
routeTemplate: "api/{controller}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "API2",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Remove the XML formatter so json is returned instead
config.Formatters.Remove(config.Formatters.XmlFormatter);
config.Formatters.Add(config.Formatters.JsonFormatter);
}
在地址中,確保您輸入完整的地址http:// localhost:56493 / api / Store / UpdateField
我也建議郵遞員測試您的api: 郵遞員您可以安裝它,也可以使用chrome擴展名。
還有一件事,我建議像這樣按角度構建自己的json:
var json = {
"Id": $scope.id,
"columnName": $scope.columnName,
"value":$scope.value
};
並這樣稱呼它:
$http.post("http://localhost:YOURPORT/api/Store/UpdateField", json)
.then(function (response) {
},
function (error, status) {
});
希望它有效:D
我一直為我工作的是:
[HttpPost]
[Route("MyRoute")]
public HttpResponseMessage SaveEntity(MyModelOrCommand model)
{
try
{
object objReturned = bus.SendWithReturn(model);
if (objReturned.GetType() == typeof(Validation))
{
return Request.CreateResponse(HttpStatusCode.BadRequest, ((Validation)objReturned).Messages);
}
return Request.CreateResponse(HttpStatusCode.OK, objReturned);
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex);
}
}
angular.module('MyModule').service('Module', ['envService', '$http', paService])
function paService(envService, $http) {
MyMethod: function (data, callback) {
$http({
method: 'POST',
url: envService.read('apiUrl') + '/MyRoute',
data: data,
}).then(function (result) {
callback(result);
})
.catch(function (result) {
callback(result);
})
}
}
對於發送對象,我在請求中使用了javascript對象
var obj = new Object();
obj.MyProperty1 = $scope.data;
obj.MyProperty2 = $scope.data2;
myService.MyMethod(JSON.stringfy(obj),function(result){
if(result.status == 200){
//do stuff
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.