1

我正在尝试在 ASP.net 中制作一个程序,用户在第 1 页(default.aspx)的文本框中输入详细信息,单击一个按钮,它出现在第 2 页(about.aspx)的列表框中。

我正在努力做到这一点,以便用户可以在第 1 页的文本框中输入尽可能多的内容,它们都将出现在第 2 页的列表框中。

第 1 页上的代码:

public void Button1_Click(object sender, EventArgs e)
{
    people = Session["mySession"] as List<string>;
    people.Add(TextBox1.Text);
}

第 2 页上的代码:

protected void Page_Load(object sender, EventArgs e)
{
    var myList = Session["mySession"] as List<string>;
            ListBox1.Text = string.Join(",", myList);
}

任何帮助都会很棒。

4

2 回答 2

4

您必须检查您的会话中是否有任何内容...在按钮上单击:

people = Session["mySession"] as List<string>;
//Create new, if null
if(people == null) 
    people = new List<string>();

people.Add(TextBox1.Text);

Session["mySession"] = people;

那是第一。其次,在第 #2 页上,您必须在页面加载时执行以下操作:

people = Session["mySession"] as List<string>;
//Create new, if null
if(people == null) 
people = new List<string>();
ListBox1.DataSource = people;
ListBox1.DataBind();

当然,如果你在这部分移动到一些静态方法来解决代码重复,那就更好了:

public static List<string> GetPeopleFromSession(){
    var people = HttpContext.Current.Session["mySession"] as List<string>;
    //Create new, if null
    if(people == null) 
        people = new List<string>();
    return people;
}
于 2013-11-09T23:35:04.557 回答
2

问题在这里:

ListBox1.Text = Session["mySession"] as List<string>;

您不能将字符串列表转换为字符串 - 另一方面,您可以决定显示所有字符串,例如

var myList = Session["mySession"] as List<string>;
ListBox1.Text = string.Join(",", myList);
于 2013-11-09T23:27:21.140 回答