Класс пользователей в C # - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть две страницы, использующие Xamarin.Forms, которые позволяют пользователю предоставлять свои данные. Первая форма требует от пользователя ввода имени пользователя и пароля. Другая страница предназначена для ввода их имени и имени, адреса, адреса электронной почты и т. Д.

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

Класс пользователя:

public class User
    {
        public string Username { get; set; }
        public string Password { get; set; }
        public string Firstname { get; set; }
        public string Surname { get; set; }
        public string Email { get; set; }
        public string Address { get; set; }
        public string Phone { get; set; }

        public User() { }
        public User(string Username, string Password)
        {
            this.Username = Username;
            this.Password = Password;

        }
        public User(string Firstname, string Surname, string Email, string Address, string Phone)
        {
            this.Firstname = Firstname;
            this.Surname = Surname;
            this.Email = Email;
            this.Address = Address;
            this.Phone = Phone;
        }

Эта функция на странице создания учетной записи называетсякогда нажата кнопка «Создать»:

async void SignUserIn(object sender, EventArgs e)
        {
            User user = new User(entry_user.Text, entry_pass.Text);

             App.IsUserLoggedIn = true;
             Navigation.InsertPageBefore(new MainPage(), this);
             await Navigation.PopAsync();
        }

Вторая страница - поскольку учетная запись уже существует, я не могу использовать слово «новый». Как я могу преодолеть это?

public User user_details;

private async void ProceedPage_Clicked(object sender, EventArgs e)
 {            
  user_details.Firstname = this.entryFName.Text;
  user_details.Surname = this.entrySName.Text;
  user_details.Phone = this.entryNumber.Text;
  user_details.Email = this.entryAddress.Text;
  user_details.Address = this.entryAddress.Text;
 }

Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 ноября 2019

Насколько я понимаю, вы пытаетесь получить доступ к переменной, которая приходит с другой страницы. Есть несколько вариантов решения. Итак, вот некоторые. Но вы можете найти и других, более подходящих, чем этот.

1. Статическая переменная со страницы 1

Вы всегда можете получить доступ к переменной public static из любого кода. Учитывая, что у вас есть две страницы:

public class Page1 : ContentPage //User input page
    {
        public static User user;
        public Page1()
        {

        }

        async void Clicked()
        {
            user = new User("username input", "password input");
        }
    }

И вторая страница:

public class Page2 : ContentPage
{
    public Page2()
    {
        //Here you can access the user variable
        Page1.user.Email = "Some other input";
    }
}

Это достаточно хорошо, если вы работаете, может быть, один раз регистрационная форма. Поэтому, когда вы закончите регистрацию, просто очистите user, используя user = new User() -> создать новый пустой экземпляр.

2. Передача переменной на следующую страницу

Вы можете передать переменную через метод конструктора new class. Учитывая, что у вас есть две страницы:

public class Page1 : ContentPage //User input page
    {
        public Page1()
        {

        }

        async void Clicked()
        {
            User user = new User("username input", "password input");
            Navigation.PushAsync(new Page2(user));
        }
    }

и вторая страница:

public class Page2 : ContentPage
{
    public Page2(User user)
    {
        //Here you can access the user variable
        user.Email = "Some other input";
    }
}

Для лучшего подхода, если вы не работаете с одноразовой формой, вы можете использовать Modelsи ViewModels, чтобы сделать ваш пользовательский интерфейс и данные более управляемыми.

Существует несколько подходов для этой цели, но я просто могу подумать, что это простой.

0 голосов
/ 03 ноября 2019
User user = new User(entry_user.Text, entry_pass.Text);

должно быть

user_details = new User(entry_user.Text, entry_pass.Text);

, чтобы user_details был готов к ProceedPage_Clicked.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...