【问题标题】:Bind ASP.NET Web API response to dropdownlist将 ASP.NET Web API 响应绑定到下拉列表
【发布时间】:2015-04-02 17:18:44
【问题描述】:

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

这是我的代码:

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 以进行绑定,但这样做似乎需要付出很多努力。

更新

这是返回的内容

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

注意Authorizations 的属性之一本身是一个列表,我假设我必须遍历并省略该属性才能将DropDown 与DataTextField = NameDataValueField = ID 绑定。

【问题讨论】:

  • 前端是Webforms吗?
  • @Pharylon 是的,WebForms。
  • 能否粘贴从语句 response.Content.ReadAsStringAsync().Result 收到的内容;

标签: c# asp.net json asp.net-web-api dotnet-httpclient


【解决方案1】:

您应该能够直接绑定到该对象,而无需费心将其转换为有意义的东西,方法是:

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

数据绑定完成反映对象的所有工作。

如果您使用JavaScriptSerializer 或 JSON.NET 以外的其他东西,您可能需要做更多的工作,但 JSON.NET 可以很好地处理此类简单数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多