2015-04-02 65 views
0

正如标题所示,我试图从Web API获取响应并将其绑定到下拉列表。无论如何要使用documentation中描述的HttpClient方法来做到这一点? API正在返回JSON格式的对象列表。将ASP.NET Web API响应绑定到下拉列表

这里是我的代码:

using (HttpClient client = new HttpClient(handler)) 
{ 
    client.BaseAddress = new Uri("MyURI"); 
    HttpResponseMessage response = client.GetAsync("Resource").Result; 
    if (response.IsSuccessStatusCode) 
    { 
     dynamic content = response.Content.ReadAsStringAsync().Result; 
     //Somehow bind to DropDown 
     //MyDdl.DataSource = content; 
    } 
} 

我正在考虑试图将其转换成DataTable为了绑定,但它似乎是一个很大的努力来做到这一点。

UPDATE

这就是正在从

[ 
    {"ID":"1","Name":"Bob","Authorizations":[]}, 
    ... 
] 

注意如何返回的属性Authorizations之一是在其本身,我假设我将不得不遍历一个列表通过并省略该属性来绑定DropDown与DataTextField = NameDataValueField = ID

+0

Webforms是前端吗? – Pharylon 2015-04-02 17:40:58

+0

@Pharylon Yup,WebForms。 – KidBatman 2015-04-02 17:42:36

+0

您可以粘贴从语句response.Content.ReadAsStringAsync()中收到的内容。 – 2015-04-02 17:51:22

回答

0

您应该能够直接绑定到该对象,甚至没有打扰它转换为有意义的事情,这样做:

var content = JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result); 
MyDdl.DataSource = content; 
MyDdl.DataTextField = "Name"; 
MyDdl.DataValueField = "ID"; 
MyDdl.DataBind(); 

数据绑定确实反映对象的所有工作。

如果您使用的是JavaScriptSerializer或JSON.NET以外的其他内容,您可能需要做更多的工作,但JSON.NET处理这样的简单数据非常好。