2016-10-24 13 views
0

我一直在嘗試使用泛型來存儲會話中的數據。 它將有2個頁面和1個類名的人來處理信息。C#泛型到會話

Page 1默認頁面允許用戶輸入姓名並選擇性別和日期。 我試圖存儲提交到通用&會話,以帶來第二頁顯示所有提交的用戶數據。

DefaultPage

public partial class _Default : Page 
{ 
    Person p; 
    List<Person> Test; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      Test = new List<Person>(); 
      Session["carrytonext"] = Test; 
     } 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     Person p = new Person(TextBox1.Text, DropDownList1.SelectedValue, Calendar1.SelectedDate); 
     Label1.Text = p.PrintPerson(); 
     Test = (List<Person>)Session["carrytonext"]; 
     Test.Add(new Person(TextBox1.Text, DropDownList1.SelectedValue, Calendar1.SelectedDate)); 

    } 
} 

這裏是我的類:

public class Person 
{ 
    public string name; 
    private string gender; 
    private DateTime dob; 

    public string Name 
    { 
     get 
     {return name;} 

     set 
     {name = value;} 
    } 

    public string Gender 
    { 
     get 
     {return gender;} 

     set 
     {gender = value;} 
    } 

    public DateTime Dob 
    { 
     get 
     {return dob;} 

     set 
     {dob = value;} 
    } 

    public Person(string name, string gender, DateTime dob) 
    { 
     this.name = name; 
     this.gender = gender; 
     this.dob = dob; 
    } 

    public string PrintPerson() 
    { 
     string s; 
     s = "Hello, my name is " + name + ". I'm " + gender + ". My DOB is " + dob.ToShortDateString() + "\n\n"; 
     return s; 
    } 
} 

在我的第2頁:

protected void Page_Load(object sender, EventArgs e) 
{ 
    foreach (var inputstring in Test) 
    { 
     ListBox1.Items.Add(inputstring + ""); 
    } 
} 

回答

1

您必須設置從測試列表會議上再次:

頁面1

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Person p = new Person(TextBox1.Text, DropDownList1.SelectedValue, Calendar1.SelectedDate); 
    Label1.Text = p.PrintPerson(); 
    Test = (List<Person>)Session["carrytonext"]; 
    Test.Add(new Person(TextBox1.Text, DropDownList1.SelectedValue, Calendar1.SelectedDate)); 
    // Add this line to your code 
    Session["carrytonext"] = Test;  
} 

第2頁

protected void Page_Load(object sender, EventArgs e) 
{ 
    List<Person> test = (List<Person>)Session["carrytonext"]; 
    foreach (var inputstring in Test) 
    { 
     // change here 
     ListBox1.Items.Add(inputstring.PrintPerson()+" "); 
    } 
} 
我每次檢查列表框它總是顯示namespace.Person(<我的課)時
+0

,似乎該值不是實際的通過。你能指導一下嗎? –

+0

我已經更改了代碼,請嘗試新的代碼。 –

+0

謝謝你的作品!你能解釋一下「PrintPerson」嗎? –