简体   繁体   English

angularjs将复杂数据发布到WebApi 2

[英]angularjs post complex data to WebApi 2

JS: JS:

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

C# C#

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

It is really weird. 真的很奇怪 If I just object, I can get the correct raw json string i post. 如果我只是反对,我可以得到我发布的正确的原始json字符串。

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

but if I change the type to a specific type, it doesn't work. 但是如果我将类型更改为特定类型,则无法使用。

The data of the object becomes default value instead of the value I post. 对象的数据变为默认值,而不是我发布的值。

I tried [FromBody] , it doesn't work either. 我尝试了[FromBody] ,它也不起作用。

By wrapping it in an object, you have an object within an object, which I'm guessing your type doesn't recognize. 通过将其包装在一个对象中,您可以在一个对象中拥有一个对象,我猜您的类型无法识别。 Just post the object itself, with an explicit route that expects it. 只需发布对象本身,并使用期望它的显式路由即可。

$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; }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM