gpt4 book ai didi

c# - 使用angularjs将多个对象发送到webapi

转载 作者:太空狗 更新时间:2023-10-29 22:58:28 24 4
gpt4 key购买 nike

我的 ASP.NET WebApi 应用程序中有以下 Controller :

[Route("api/PutItem/")]
[HttpPut]
public IHttpActionResult PutItem(Guid id, Item item)
{
if (!ModelState.IsValid)
}

我的“Items”AngularJs 服务中有以下内容

var doEditItem = function(item){
var deferred = $q.defer();

console.log('item', item);
var config = {
headers: { 'Authorization': "Bearer " + $rootScope.token }
//,params: {id:item.ItemId}
}
$http.put(sitesettings.url() + "api/PutItem/", item, config)
.success(function(data){

deferred.resolve(data);
})....

我最终收到这条消息:

No HTTP resource was found that matches the request URI 'http://localhost:63289/api/PutItem/'.", MessageDetail: "No action was found on the controller 'Items' that matches the request."}

我已经更改了参数以添加如下项目:

jItem = {id:item.ItemId, item:item}

然后我尝试像这样将 jItem 传递给 put 方法:

    $http.put(sitesettings.url() + "api/PutItem/", jItem, config)

我的应用程序选择了 Guid,但没有选择新的 Item。如果我删除 Guid 并发送项目,我的应用程序会选择新项目。

我想知道我需要如何更改我的应用程序,以便我可以发送一个 Guid 并且应用程序也可以选择新的项目。

我用过 Angular.toJson(item, false);但这似乎并没有改变我的 ASP.NET 应用程序接收信息的方式。

非常感谢

最佳答案

您不能将复杂类型与原始类型一起发送到 WebAPI 操作,您可以发送多个原始类型(Guid、int、字符串等)或单个复杂类型(Item)。如果您想同时发送两者,解决方法是使用 JObject:

[HttpPut]
public void PutItem(JObject data)
{
Item item = data["item"].ToObject<Item>();
Guid id = data["id"].ToObject<Guid>();
}

像这样从 Angular 发送:

 $http({
url: "/api/PutItem",
method: "PUT",
data: {id: SOMEGUID, item: { ......} }
});

关于c# - 使用angularjs将多个对象发送到webapi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28514539/

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