2016-03-07 129 views
0

你好我想发布一个对象,它是这样的:PostUrlEncodedAsync复杂的对象

public class myobj 
{ 
public string name {get;set;} 
public myEntity myentity {get;set;} 
public mySecondEntity mySecondEntity {get;set;} 

} 

public class myEntity {get;set;} 
{ 
public string name {get;set;} 
public string description {get;set;} 
} 

public class mySecondEntity {get;set;} 
{ 
public string name {get;set;} 
public string description {get;set;} 
} 

当我使用产生MyObj中的一个新对象,并使用PostUrlEncodedAsync它被张贴为:

name : "myname", 
myentity : "detex.Models.DTO.myEntity", 
mysecondentity : "detex.Models.DTO.mySecondEntity 

不知道我的名字空间/类在这些领域正在做什么。我发布此为 等待“myurl.com”.PostUrlEncodedAsync(_model)。

+0

请参阅[“应该在其标题中包含”标签?“](http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles),其中共识是“不,他们不应该”! –

+0

好的,谢谢Andreas – user1012500

回答

0

Flurl假定传递给PostUrlEncodedAsync的对象表示简单的名称/值对。它只是对你的价值做一个ToString,这就是你为什么得到detex.Models.DTO.myEntity。你想将这些值序列化为JSON吗?如果是这样,你需要做的是自己:

"myurl.com".PostUrlEncodedAsync(new { 
    name = _model.name, 
    myentity = JsonConvert.SerializeObject(_model.myentity), 
    mysecondentity = JsonConvert.SerializeObject(_model.mySecondEntity) 
}); 

发布复杂的对象以URL编码是不典型的,这就是为什么这些序列化值不内置Flurl。

+0

谢谢Todd,你知道一种将复杂对象转换为名称值对的方法吗? – user1012500

+0

你想如何序列化这些值?没有标准。我的答案显示了如何将它们序列化为JSON。不是你在找什么? –

+0

嗨托德,我已经试图序列化整个对象 - 与您的方法不同,我相信我收到了来自端点的BadRequest。 – user1012500