Asp.net 如何将数据从Web API获取到Xamarin表单选择器?
我正在开发一个Xamarin应用程序,我想从一个具有服务器数据库的Web API加载一个数据选择器。我尝试用谷歌搜索这个,但大多数文章都没有显示使用GetAsync方法、模型类和ViewModel的源“服务类”的内容。如果有人能帮我举个例子,我将不胜感激 这是我在ASP.NET Web API中的控制器Asp.net 如何将数据从Web API获取到Xamarin表单选择器?,asp.net,sql-server,asp.net-web-api,xamarin.forms,picker,Asp.net,Sql Server,Asp.net Web Api,Xamarin.forms,Picker,我正在开发一个Xamarin应用程序,我想从一个具有服务器数据库的Web API加载一个数据选择器。我尝试用谷歌搜索这个,但大多数文章都没有显示使用GetAsync方法、模型类和ViewModel的源“服务类”的内容。如果有人能帮我举个例子,我将不胜感激 这是我在ASP.NET Web API中的控制器 // GET: api/TipoUsers public IQueryable<TipoUser> GetTipoUsers() { return db.TipoUsers;
// GET: api/TipoUsers
public IQueryable<TipoUser> GetTipoUsers()
{
return db.TipoUsers;
}
ViewModel类
public class TipoUsuario
{
public int IdTipoUsuario { get; set; }
public string Nome { get; set; }
}
public class UsuarioViewModel
{
public ObservableCollection<TipoUsuario> tipos { get; set; }
public UsuarioViewModel() {
Task<List<TipoUsuario>> task = ApiService.ObterTipoUsuarios();
tipos = new ObservableCollection<TipoUsuario>(task.Result);
}
}
服务等级
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;
}
}
}
公共类API服务
{
公用常量字符串Url=”http://thisismysite:44342/";
公共静态异步任务GetTipoUsers()
{
尝试
{
HttpClient=新的HttpClient();
字符串url=url+“/api/TipoUsers”;
string response=wait client.GetStringAsync(url);
List tipos=JsonConvert.DeserializeObject(响应);
返回tipos;
}
捕获(例外)
{
投掷;
}
}
}
当我调试应用程序时,它不会加载屏幕。这可能是由于一些原因造成的,我会检查你的异步方法没有引发你看不到的异常。异步方法返回一个任务对象,如果在其中抛出异常,它将在Task.exception中返回的对象中可见 此外,当您将ObserableCollection设置为新实例(您希望从集合中添加和删除)时,也不会调用属性更改事件 您要更改:
public UsuarioViewModel() {
Task<List<TipoUsuario>> task = ApiService.ObterTipoUsuarios();
tipos = new ObservableCollection<TipoUsuario>(task.Result);
}
public UsuarioViewModel(){
Task=ApiService.obertipousuarios();
tipos=新的可观察集合(task.Result);
}
例如:
public UsuarioViewModel() {
Task<List<TipoUsuario>> task = ApiService.ObterTipoUsuarios();
var temptipos = task.Result;
foreach(var tipo in temptipos)
{
tipos.Add(tipo);
}
}
public UsuarioViewModel(){
Task=ApiService.obertipousuarios();
var testipos=task.Result;
foreach(Tentipos中的var tipo)
{
tipo.Add(tipo);
}
}
这方面有大量的文档记录。Xamarin提供了三个完整的示例和演练-。@DaleK请帮我举一些示例,我是新手。您还没有告诉我们关于您的API的任何有用信息-它的签名是什么,它需要auth,是RESTful还是SOAP或其他什么?我刚才给了你几个例子的链接,让我们看看你的代码,并就你遇到的问题问一些具体的问题。阅读将为你提供网站指南的概述
public UsuarioViewModel() {
Task<List<TipoUsuario>> task = ApiService.ObterTipoUsuarios();
tipos = new ObservableCollection<TipoUsuario>(task.Result);
}
public UsuarioViewModel() {
Task<List<TipoUsuario>> task = ApiService.ObterTipoUsuarios();
var temptipos = task.Result;
foreach(var tipo in temptipos)
{
tipos.Add(tipo);
}
}