Как захватить объект $ scope с несколькими объектами из веб-API

0

Я пытаюсь передать объект, в котором есть несколько объектов внутри него, как показано ниже

[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.

  • 1
    Было бы лучше показать json здесь, потому что показанная структура данных неясна.
  • 0
    json должен быть object=[{ProductID:"50"},{BrandID:"24"},{BrandID:"26"},{BrandID:"20"}]
Теги:
object
asp.net-web-api

2 ответа

1
Лучший ответ

Мне кажется, что массив, который вы пытаетесь отправить в 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();    
}
  • 0
    Я убивал себя, чтобы получить такой объект видимости. Но не мог этого сделать
  • 0
    Можете ли вы объяснить, почему?
1

Вам просто нужно создать модель класса, которая соответствует вам 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;}
}
  • 0
    Поскольку я передаю несколько идентификаторов BrandID, можно ли использовать эту модель. ?
  • 0
    Я не совсем уверен, что вы подразумеваете под несколькими идентификаторами брендов, если вы имеете в виду несколько объектов, каждый из которых содержит идентификатор идентификатора, то да, это будет совершенно нормально.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню