首页 > 解决方案 > 将数据从主页上的 web api 传递到 xamarin 表单中的详细信息页面

问题描述

以下是我的代码在包含数据的页面上的样子:

private async Task GetLeaveBalance() {
    try
    {
        Uri = "http://192.168.42.35/API/api/leave/getbalance/"+ empId + "/"+ companyId;
        client = new HttpClient();

        var authHeaderValue = basic;
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authHeaderValue);

        HttpResponseMessage response = await client.GetAsync(Uri);
        response.EnsureSuccessStatusCode();
        string responseBody = await response.Content.ReadAsStringAsync();

        if (response.IsSuccessStatusCode)
        {
            var emp = JsonConvert.DeserializeObject<List<Leave>>(responseBody);
            dataGrid.ItemsSource = emp;
            UserDialogs.Instance.HideLoading();
        }
    }
    catch (HttpRequestException e)
    {
        Console.WriteLine("\nException Caught!");
        Console.WriteLine("Message :{0} ", e.Message);
        UserDialogs.Instance.ShowError(e.Message);
    }
}

private void Button_Clicked(object sender, EventArgs e)
{
    Navigation.PushAsync(new Details());
}

我的第二页(详细信息页面)有一个选择器,需要用我从 emp 变量中获取的数据填充该选择器,那么如何将数据从第一页传递到第二页(详细信息页面)?

标签: c#asp.net-web-apixamarin.formspicker

解决方案


考虑到您的方法和代码,您可以直接将数据传递给第二页的构造函数

List<Leave> leaves = new List<Leave>();

private async Task GetLeaveBalance() {
    ...
    leaves = JsonConvert.DeserializeObject<List<Leave>>(responseBody);
    ...
}

private void Button_Clicked(object sender, EventArgs e)
{
    Navigation.PushAsync(new Details(leaves));
}

推荐阅读