簡體   English   中英

Web API使用C#ListView應用程序使用JSON Rest API進行咨詢-Android返回空白

[英]Web API consult using JSON rest API by C# ListView Application - Android returns Blank

我在這里面臨一個小問題。 該代碼似乎還可以,但是應用程序未綁定我要在WebAPI數據庫中插入的正確列表。

我期望達到的目標:

Cross Platform中的Listview(在這種情況下,我正在Android中測試),該列表列出了WebAPI代碼中的所有數據,如下所示:

這是WebAPI上列出的Json文件

[{"Id":1,"BusinessName":"La ventana","BusinessFantasyName":"La Ventana","BusinessArea":"Restaurante","BusinessSpecificArea":"Pizzaria","Country":"Brasil","State":"RS","City":"Rio Grande","Adress":"Av Rio Grande","Neighbourhood":"Cassino","Number":"134","Complement":"Casa","Latitude":-32.1853837,"Longitude":-52.1582284,"DateOfReg":"26/12/2017","DateOfMod":"26/12/2017","BusinessStatus":"Ativo","RegisteredBy":"Daniel Serrão"},{"Id":2,"BusinessName":"Supermercado Granabara - Cassino","BusinessFantasyName":"Supermercado Granabara - Cassino","BusinessArea":"Supermercados","BusinessSpecificArea":"Bens e Consumo","Country":"Brasil","State":"RS","City":"Rio Grande","Adress":"Av Rio Grande","Neighbourhood":"Cassino","Number":"150","Complement":"NA","Latitude":-32.1845922,"Longitude":-52.1591549,"DateOfReg":"26/12/2017","DateOfMod":"26/12/2017","BusinessStatus":"Ativo","RegisteredBy":"Daniel Serrão"}]

這是為了參考此WEBAPI的代碼:

namespace Icquire.RestClient
{ public class RestClient<T> 
{
private const string WebServiceUrl = "http://localhost:58173/api/BusinessRegs/";

    public async Task<List<T>> GetAsync()
    {
        var httpClient = new HttpClient();
        var json = await httpClient.GetStringAsync(string.Format(WebServiceUrl));
        var BusinessReg = JsonConvert.DeserializeObject<List<T>>(json);
        return BusinessReg;
    }

    public async Task<bool> PostAsync(T t)
    {
        var httpClient = new HttpClient();
        var json = JsonConvert.SerializeObject(t);
        HttpContent httpContent = new StringContent(json);
        httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
        var result = await httpClient.PostAsync(WebServiceUrl, httpContent);
        return result.IsSuccessStatusCode;
    }

    public async Task<bool> PutAsync(int Id, T t)
    {
        var httpClient = new HttpClient();
        var json = JsonConvert.SerializeObject(t);
        HttpContent httpContent = new StringContent(json);
        httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
        var result = await httpClient.PostAsync(WebServiceUrl + Id, httpContent);
        return result.IsSuccessStatusCode;
    }

    public async Task<bool> DeleteAsync(int Id, T t)
    {
        var httpClient = new HttpClient();
        var response = await httpClient.DeleteAsync(WebServiceUrl + Id);
        return response.IsSuccessStatusCode;           
    }



}}

這是內部服務的代碼:

namespace Icquire.Services

{ public class BusinessRegServices
{ public async Task<List<BusinessReg>> GetBusinessRegAsync()

    {
        RestClient<BusinessReg> restClient = new RestClient<BusinessReg>();
        var BusinessRegList = await restClient.GetAsync();
        return BusinessRegList;
    }
}

}

這是為了查看數據的代碼:

namespace Icquire.ViewModel
{ public class BusinessRegView : INotifyPropertyChanged
{
    private List<BusinessReg> _BusinessRegList
    {
        get { return _BusinessRegList; }
        set
        {
            _BusinessRegList = value;
            OnPropertyChanged();
        }
    }


    public List<BusinessReg> BusinessRegList { get; set; }


    public BusinessRegView()
    {
        InitializeDataAsync();
    }

    private async Task InitializeDataAsync()
    {
        var businessRegServices = new BusinessRegServices();

        BusinessRegList = await businessRegServices.GetBusinessRegAsync();
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
};

}

這是contentPage中的My ListView:

 <ListView ItemsSource="{Binding BusinessRegList}" HasUnevenRows="True" >
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Orientation ="Vertical">
                            <Label TextColor="Silver" Text="{Binding BusinessName}"/>
                            <Label TextColor="Silver" Text="{Binding Adress}"/>
                            <Label TextColor="Silver" Text="{Binding Number}"/>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

問題是,使用上述代碼,ListView中的Binding返回空白。 隨着Json正確生成,我認為問題出在咨詢Json文件上。 或在服務代碼中。 有人有線索嗎?

預先感謝... Daniel。

假設您的服務呼叫實際上正在返回數據並且綁定設置正確。

您的財產聲明不正確,應為:

private List<BusinessReg> _BusinessRegList;

public List<BusinessReg> BusinessRegList
{
  get { return _BusinessRegList; }
  set
  {
     _BusinessRegList = value;
     OnPropertyChanged();
   }
}

可以在“ 屬性”(C#編程指南)中找到更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM