2015-07-02 4 views
0

JS:angularjs размещать сложные данные в WebAPI 2

$http.post("/api/Checkout/SaveOrderOption", { OrderOption: OrderOption }) 

C#

[HttpPost] 
public void SaveOrderOption(object OrderOption) 
{ 
    _Logger.Trace(OrderOption.ToJSON()); 
} 

Это действительно странно. Если я просто возражу, я могу получить правильную строку json json.

{"OrderOption":{"xxxx":"xxx","www":true,"yyy":true}} 

, но если я изменю тип на определенный тип, он не будет работать.

Данные объекта становятся значениями по умолчанию вместо значения, которое я отправляю.

Я пробовал [FromBody], он тоже не работает.

ответ

1

Обернув его в объект, у вас есть объект внутри объекта, который, как я предполагаю, ваш тип не распознает. Просто опубликуйте сам объект с явным маршрутом, который его ожидает.

$http.post("/api/Checkout/SaveOrderOption", OrderOption) 

[HttpPost] 
[Route("Checkout/SaveOrderOption/{orderOption}")] 
public void SaveOrderOption([FromBody]OrderOption orderOption) 
{ 
    _Logger.Trace(orderOption.ToJSON()); 
} 

public class OrderOption 
{ 
    public string Xxxx { get; set; } 
    public bool Www { get; set; } 
    public bool Yyy { get; set; } 
} 
+0

это работает! но я не понимаю. Я использовал WebMethod. То, как я использовал, отлично работает на WebMethod. Кроме того, как мы можем отправить 2 объекта? – maxisam

+0

Если вы хотите разместить два объекта, вы должны создать составной объект (OrderOptionWrapper), который содержит два свойства: OrderOption и ваше новое свойство объекта. Надеюсь, это поможет прояснить это для вас :) –

+0

Это своего рода хакерский путь. Но спасибо за помощь! – maxisam

Смежные вопросы