Button_click не назначает значения TextBox свойствам объекта - PullRequest
0 голосов
/ 22 ноября 2018

Я создал тестовый объект для класса UserInfo с именем testUser.Когда я использую это, все работает нормально, и объект находится в списке объектов.Когда я присваиваю значения textbox.text свойствам объекта и нажимаю кнопку отправки, объект не создается и вообще не отображается в списке (либо это, либо значения текстового поля не присваиваются свойствам.Я в полной растерянности относительно того, почему это происходит.Я попытался возиться с ViewState и переменными сеанса, но я в полном недоумении.Кажется, это не проблема государства.Вот мой код:

namespace WebApplication1
{
    public partial class CreateAccount : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            List<UserInfo> allUsersList = Application["AllUsersList"] as List<UserInfo>;
            UserInfo testUser = new UserInfo();
            testUser.FirstName = "Bob";
            testUser.MiddleInitials = "B";
            testUser.LastName = "Bob";
            testUser.EmailAddress1 = "Bob@gmail.com";
            testUser.EmailAddress2 = null;
            testUser.StreetAddress = "123 Bob Lane";
            testUser.AptNo = null;
            testUser.City = "BobTown";
            testUser.State = "TX";
            testUser.Zip = "77550";
            testUser.HomePhone = "5555555555";
            testUser.JobExperience = "None";
            testUser.Password = "bob1000";
            allUsersList.Add(testUser);


        }

        protected void SaveButton_Click(object sender, EventArgs e)
        {

            List<UserInfo> allUsersList = Application["AllUsersList"] as List<UserInfo>;
            UserInfo newUser = new UserInfo();
            newUser.FirstName = firstName.Text;
            newUser.MiddleInitials = middleInitials.Text;
            newUser.LastName = lastName.Text;
            newUser.EmailAddress1 = emailAddress1.Text;
            newUser.EmailAddress2 = emailAddress2.Text;
            newUser.StreetAddress = streetAddress.Text;
            newUser.AptNo = aptno.Text;
            newUser.City = city.Text;
            newUser.State = state.Text;
            newUser.Zip = zip.Text;
            newUser.HomePhone = phone.Text;
            newUser.JobExperience = jobExperience.Text;
            newUser.Password = password.Text;
        }

        protected void CheckAccount_Click(object sender, EventArgs e)
        {
            List<UserInfo> allUsersList = Application["AllUsersList"] as List<UserInfo>;
            UserInfo testUser = new UserInfo();
            foreach (UserInfo item in allUsersList)
            {
                if (item.FirstName == "Bob")
                {
                    emailTextBox.Text = "Bob was found.";
                    //Note that this works and and it finds the testUser 
                    //value
                }
            }
        }
    }
}

Вот дизайн класса для объекта:

namespace WebApplication1.App_Code
{
    public class UserInfo
    {
        String firstName;
        String middleInitials;
        String lastName;
        String emailAddress1; 
        String emailAddress2;
        String streetAddress;
        String aptNo;
        String city;
        String state;
        String zip;
        String homePhone;
        String jobExperience;
        String password;
        public String FirstName
        {
            get { return firstName; } 
            set { firstName = value; } 
        }
        public String MiddleInitials
        {
            get { return middleInitials; }
            set { middleInitials = value; }
        }
        public String LastName
        {
            get { return lastName; }
            set { lastName = value; }
        }
        public string EmailAddress1
        {
            get { return emailAddress1; }
            set { emailAddress1 = value; }
        }
        public string EmailAddress2
        {
            get { return emailAddress2; }
            set { emailAddress2 = value; }
        }
        public string StreetAddress
        {
            get { return streetAddress; }
            set { streetAddress = value; }
        }
        public string AptNo
        {
            get { return aptNo; }
            set { aptNo = value; }
        }
        public string City
        {
            get { return city; }
            set { city = value; }
        }
        public string State
        {
            get { return state; }
            set { state = value; }
        }
        public string Zip
        {
            get { return zip; }
            set { zip = value; }
        }
        public string HomePhone
        {
            get { return homePhone; }
            set { homePhone = value; }
        }
        public string JobExperience
        {
            get { return jobExperience; }
            set { jobExperience = value; }           
        }
        public string Password
        {
            get { return password; }
            set { password = value; }
        }
    }
}

Я новичок в asp.net, и это заставляет меня чувствовать себя глупо.Любая помощь приветствуется!

Обновление: этот объект не создается и не присваивается списку:

protected void SaveButton_Click(object sender, EventArgs e)
{

    List<UserInfo> allUsersList = Application["AllUsersList"] as List<UserInfo>;
    UserInfo newUser = new UserInfo();
    newUser.FirstName += firstName.Text;
    newUser.MiddleInitials = middleInitials.Text;
    newUser.LastName = lastName.Text;
    newUser.EmailAddress1 = emailAddress1.Text;
    newUser.EmailAddress2 = emailAddress2.Text;
    newUser.StreetAddress = streetAddress.Text;
    newUser.AptNo = aptno.Text;
    newUser.City = city.Text;
    newUser.State = state.Text;
    newUser.Zip = zip.Text;
    newUser.HomePhone = phone.Text;
    newUser.JobExperience = jobExperience.Text;
    newUser.Password = password.Text;
    allUsersList.Add(newUser);
    Application["AllUsersList"] = allUsersList;
}

Почему значения текстового поля не присваиваются свойствам объекта?Почему этот объект не создается и не добавляется в список?Я запустил тесты, и основной список всегда пуст, и в нем ничего нет.

1 Ответ

0 голосов
/ 22 ноября 2018

Вы не добавили заполненный список в Application["AllUsersList"] после добавления элементов в свой список.Таким образом, вам нужно что-то вроде этого в вашем коде:

allUsersList.Add(testUser);
Application["AllUsersList"] = allUsersList;

Также в каждом обратном передаче вы всегда получаете старые значения, поэтому вам нужно использовать следующее условие в Page-Load событие:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        List<UserInfo> allUsersList = Application["AllUsersList"] as List<UserInfo>;
        ....
        ....
        allUsersList.Add(testUser);
        Application["AllUsersList"] = allUsersList;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...