PostUrlEncodedAsync与复杂对象

时间:2016-03-07 10:11:36

标签: flurl

您好我正在尝试发布一个类似的对象:

    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)。

1 个答案:

答案 0 :(得分: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中。

相关问题