2015-05-01 2 views
1

Как только пользователь отправляет информацию для входа в систему и нажимает кнопку входа в систему, вызывается следующий метод;Создание метода входа в Xamarin.forms

public Page OnLogInButtonClicked (string email, string password) 
{ 
    var client = new RestClient("http://babyAPI.com"); 
    var request = 
     new RestRequest("api/ApiKey?email=" + email + "&password=" + password, Method.GET); 

    var queryResult = client.Execute(request); 

    if (queryResult.StatusCode == HttpStatusCode.OK) 
    { 
     var deserial = new JsonDeserializer(); 
     var x = deserial.Deserialize<ApiKey>(queryResult); 

     return; 
    } 
    else 
    { 
     return; 
    } 

} 

Это правильный способ сделать это? И если пользователь аутентифицирован, мне нужно перейти на новую страницу, иначе проверка подлинности не удалась. Как это можно сделать?

+0

выглядит хорошо. Что не работает? – Sooner

ответ

0

Ваш вопрос довольно широк. Что вы хотите решить?

Вот что, я думаю, можно улучшить в этом коде. Предполагая, что это класс ViewModel - если он не читается на MVVM в Xamarin. Я предлагаю также читать на Separation of Concerns (также смотрите ссылки на дне около DRY и Единой ответственности)

// make the method async so your UI doesn't lock up 
public async Task AuthenticateAndNavigate(string email, string pass){ 
    // your MVVM framework may have IsBusy property, otherwise - define it 
    // it should be bindable so you can use it to bind activity indicators' IsVisible and buttons' IsEnabled 
    IsBusy = true; 
    try{ 
    // split out the code that talks to the server in a separate class - don't mix UI, ViewModel and server interactivity (separation of concerns principle) 
    // the assumption here is that a null is returned if auth fails 
    var apiKey = BabyApi.GetApiKey(email, pass); 

    // the Navigation property below exists in some MVVM frameworks, otherwise it comes from a Page instance that calls this code 
    if (apiKey!=null) 
     await Navigation.PushModalAsync(new HomePage()); 
    else 
     await Navigation.PushAsync(new FailedToAuthenticatePage()); // or just do nothing 
    } catch { 
    await Navigation.PushAsync(new FailedToAuthenticatePage { Error: x.Message }); 
    } finally { 
    IsBusy = false; 
    } 
} 
Смежные вопросы