【发布时间】:2020-09-08 20:26:58
【问题描述】:
我正在开发一个 Xamarin 应用程序,我想使用来自具有服务器数据库的 Web API 的数据加载一个选取器。我试着用谷歌搜索,但大多数文章都没有显示使用 Get async Method、Model 类和 ViewModel 的源“服务类”的内容。如果有人能帮我举个例子,我将不胜感激。
这是我在 ASP.NET Web API 中的控制器
// GET: api/TipoUsers
public IQueryable<TipoUser> GetTipoUsers()
{
return db.TipoUsers;
}
模型类
public class TipoUsuario
{
public int IdTipoUsuario { get; set; }
public string Nome { get; set; }
}
ViewModel 类
public class UsuarioViewModel
{
public ObservableCollection<TipoUsuario> tipos { get; set; }
public UsuarioViewModel() {
Task<List<TipoUsuario>> task = ApiService.ObterTipoUsuarios();
tipos = new ObservableCollection<TipoUsuario>(task.Result);
}
}
Xaml 页面
<Picker Title="Selecione o Tipo de Usuario"
ItemsSource="{Binding tipos}"
ItemDisplayBinding="{Binding Nome}"/>
Xaml.cs
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class UsuarioPage : ContentPage
{
public UsuarioPage()
{
InitializeComponent();
BindingContext = new UsuarioViewModel();
}
}
}
服务类
public class ApiService
{
public const string Url = "http://thisismysite:44342/";
public static async Task<List<TipoUsuario>> GetTipoUsers()
{
try
{
HttpClient client = new HttpClient();
string url = Url + "/api/TipoUsers";
string response = await client.GetStringAsync(url);
List<TipoUsuario> tipos = JsonConvert.DeserializeObject<List<TipoUsuario>>(response);
return tipos;
}
catch (Exception)
{
throw;
}
}
}
当我调试应用程序时,它只是不加载屏幕。
【问题讨论】:
-
这已被广泛记录。 Xamarin 提供了三个带有演练的完整示例 - docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/…。
-
@DaleK 请帮我举个例子,我是新手..
-
您没有告诉我们任何有关您的 API 的有用信息 - 它的签名是什么,是否需要身份验证,是 RESTful 还是 SOAP 或其他什么?我只是给了你几个例子的链接。
-
向我们展示您的代码并就您遇到的问题提出具体问题
-
阅读 How to Ask 将为您提供网站指南的概述
标签: asp.net sql-server asp.net-web-api xamarin.forms picker