gpt4 book ai didi

angularjs - 如何将 AngularJS $http.post 中的多个参数发送到 Web API Controller 操作方法

转载 作者:行者123 更新时间:2023-12-01 13:47:04 25 4
gpt4 key购买 nike

如何将 angularjs $http.post 中的多个参数发送到 web api Controller 操作方法。

下面是我的代码。

AngularJS 代码

var complexObj = { prop1: "value", prop2: "value" };

var id = 100;

var data = { id: id, complexObj: complexObj };

$http({
method: 'POST',
url: 'http://localhost/api/WebApiController/MethodName',
data: data
}).success(function (data, status) {
//do something...
});


$http.post('http://localhost/api/WebApiController/MethodName', data)
.success(function (data, status) {
//do something...
});

Web API Controller

[RoutePrefix("api/WebApiController")]
public class WebApiController: ApiController
{
[Route("MethodName")]
public ReturnValue WebApiAction(string id,ComplexObj complexObj)
{
// process request and return data...
}
}

我在 fiddler 中收到以下响应消息。

{ "message": "No HTTP resource was found that matches the request URI 'http://localhost/api/WebApiController/MethodName'.",
"messageDetail": "No action was found on the controller 'WebApiController' that matches the request." }

当我单独发送 complexObj 时,它访问了 web api,但所有属性都为 null 或设置为默认值。

我做错了什么?如何在 $http.post 中发送两个或多个参数(包括复杂对象和字符串/整数)?非常感谢任何帮助。

最佳答案

Web API 不支持这种方式的多个 post 参数。

最好的办法是将 Id 汇总到 ComplexObj 中并将其作为单个参数发布。

complexObj.id = id;
var data = complexObj;

更新您的签名以仅获取一个对象。

[Route("MethodName")]
public ReturnValue WebApiAction(ComplexObj complexObj)
{
// process request and return data...
}

如果您绝对希望能够发布这样的数据,请考虑 Rick Strahl 的 post关于创建自定义参数绑定(bind)器。

关于angularjs - 如何将 AngularJS $http.post 中的多个参数发送到 Web API Controller 操作方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35182520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com