Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何将数据从Web API获取到Xamarin表单选择器?_Asp.net_Sql Server_Asp.net Web Api_Xamarin.forms_Picker - Fatal编程技术网

Asp.net 如何将数据从Web API获取到Xamarin表单选择器?

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;

我正在开发一个Xamarin应用程序,我想从一个具有服务器数据库的Web API加载一个数据选择器。我尝试用谷歌搜索这个,但大多数文章都没有显示使用GetAsync方法、模型类和ViewModel的源“服务类”的内容。如果有人能帮我举个例子,我将不胜感激

这是我在ASP.NET Web API中的控制器

// 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);
    }
}