Я пытаюсь передать объект, в котором есть несколько объектов внутри него, как показано ниже
[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.
Мне кажется, что массив, который вы пытаетесь отправить в Web API, содержит разные объекты с разными схемами. Этот подход, безусловно, подвержен ошибкам и не позволит вам правильно использовать ModelBinding
.
Почему бы вам не изменить формат своего объекта на что-то вроде этого?
$scope.myObject = {
ProductID: 50,
BrandIDs: [24, 26, 20]
};
Используя этот вид объекта, вы сможете привязать его к строго типизированной модели в Web API.
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();
}
Вам просто нужно создать модель класса, которая соответствует вам 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;}
}
object=[{ProductID:"50"},{BrandID:"24"},{BrandID:"26"},{BrandID:"20"}]