Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从web api捕获具有多个对象的$scope对象_Javascript_C#_Angularjs_Object_Asp.net Web Api - Fatal编程技术网

Javascript 如何从web api捕获具有多个对象的$scope对象

Javascript 如何从web api捕获具有多个对象的$scope对象,javascript,c#,angularjs,object,asp.net-web-api,Javascript,C#,Angularjs,Object,Asp.net Web Api,我试图传递一个对象,其中包含多个对象,如下所示 [Object, Object, Object, Object] 0 : Object ProductID : "50" __proto__ : Object 1 : Object BrandID : 24 __proto__ : Object 2 : Object BrandID : 26 __proto__ : Object 3 : Object BrandID : 20 __proto__ : Object 其中一个对象与其他对象具有不同的

我试图传递一个对象,其中包含多个对象,如下所示

[Object, Object, Object, Object]
0
:
Object
ProductID
:
"50"
__proto__
:
Object
1
:
Object
BrandID
:
24
__proto__
:
Object
2
:
Object
BrandID
:
26
__proto__
:
Object
3
:
Object
BrandID
:
20
__proto__
:
Object

其中一个对象与其他对象具有不同的键值对。如何从Web Api控制器获取此数据的捕获。我应该如何在Web Api项目中修改我的模型。

您只需要创建一个与您的JSON相对应的类模型,Web Api将自动绑定它。看起来您传递的是一个数组,所以您可以这样做:

public void Execute(Model[] input)
{

}

....

public class Model
{
    public int? ProductId {get;set;}
    public int? BrandId {get;set;}
}
或者,如果您想要一个内部带有数组的对象,您可以传递这样的类

public class ProductsContainer
{
     public Product[] Products {get;set;}
}

您只需要创建一个与您对应的类模型,JSON和WebAPI将自动绑定它。看起来您传递的是一个数组,所以您可以这样做:

public void Execute(Model[] input)
{

}

....

public class Model
{
    public int? ProductId {get;set;}
    public int? BrandId {get;set;}
}
或者,如果您想要一个内部带有数组的对象,您可以传递这样的类

public class ProductsContainer
{
     public Product[] Products {get;set;}
}

在我看来,您试图发送到Web API的数组包含具有不同模式的不同对象。这种方法当然容易出错,并且不允许您正确使用
ModelBinding

为什么不把对象的格式改成这样呢

$scope.myObject = {
    ProductID: 50,
    BrandIDs: [24, 26, 20]
};
使用这种对象,您将能够将其绑定到WebAPI中的强类型模型

public class MyModel {
    public int ProductID { get; set; }
    public List<int> BrandIDs { get; set; }
}

public IHttpActionResult Post(MyModel model) {
    var productId = model.ProductID;
    foreach(var brandId in model.BrandIDs) {
        DoSomething(brandId);
    }
    return Ok();    
}
公共类MyModel{
public int ProductID{get;set;}
公共列表BrandId{get;set;}
}
公共IHttpActionResult帖子(MyModel){
var productId=model.productId;
foreach(model.BrandIDs中的var brandId){
剂量测定法(brandId);
}
返回Ok();
}

在我看来,您试图发送到Web API的数组包含具有不同模式的不同对象。这种方法当然容易出错,并且不允许您正确使用
ModelBinding

为什么不把对象的格式改成这样呢

$scope.myObject = {
    ProductID: 50,
    BrandIDs: [24, 26, 20]
};
使用这种对象,您将能够将其绑定到WebAPI中的强类型模型

public class MyModel {
    public int ProductID { get; set; }
    public List<int> BrandIDs { get; set; }
}

public IHttpActionResult Post(MyModel model) {
    var productId = model.ProductID;
    foreach(var brandId in model.BrandIDs) {
        DoSomething(brandId);
    }
    return Ok();    
}
公共类MyModel{
public int ProductID{get;set;}
公共列表BrandId{get;set;}
}
公共IHttpActionResult帖子(MyModel){
var productId=model.productId;
foreach(model.BrandIDs中的var brandId){
剂量测定法(brandId);
}
返回Ok();
}

最好在这里显示json,因为显示的数据结构不清楚。json应该是
对象=[{ProductID:“50”},{BrandID:“24”},{BrandID:“26”},{BrandID:“20”}]
最好在这里显示json,因为显示的数据结构不清楚。json应该是
对象=[{ProductID:“50”},{BrandID:“24”},{BrandID:“26”},{BrandID:“20”}]
既然我传递了多个BrandId,那么这个模型可以使用吗?我不太清楚多个BrandId是什么意思,如果你是指多个对象,每个对象都包含一个BrandId,那么是的,那就完全可以了。非常感谢。不客气,如果你喜欢,请不要忘记接受答案:)因为我传递了多个BrandIdBrandId这个模型可以使用吗?我不太清楚你所说的多个BrandId是什么意思,如果你指的是多个对象,每个对象都包含一个BrandId,那么是的,这将是完全好的。非常感谢。不客气,如果你喜欢,请不要忘记接受答案:)我在拼命想让这样的scope对象通过.但是做不到。你能解释一下为什么吗?我拼命想让这样的范围对象通过。但是做不到。你能解释一下为什么吗?