2

我有两页。first.aspx 和 second.aspx。为了从 first.aspx 中获取所有控制值,我在 second.aspx 中添加了指令

<%@ PreviousPageType VirtualPath="~/PR.aspx" %>

我可以毫无问题地获取所有以前的页面控件并将其设置为标签,但我有一个大问题是将这些值保存到私有变量,并在页面加载事件完成后重用它。这是代码示例。当我尝试以另一种方法从输入中获取值时,它没有添加任何内容。为什么?

    public partial class Second : System.Web.UI.Page
        {        
            List<string> input = new List<string>();
            protected void Page_Load(object sender, EventArgs e)
            {
                    if (Page.PreviousPage != null&&PreviousPage.IsCrossPagePostBack == true)
                    {
                        TextBox SourceTextBox11 (TextBox)Page.PreviousPage.FindControl("TextBox11");
                        if (SourceTextBox11 != null)
                        {
                            Label1.Text = SourceTextBox11.Text;
                            input.Add(SourceTextBox11.Text);
                        }
                     }
              }

            protected void SubmitBT_Click(object sender, EventArgs e)
        {
                  //do sth with input list<string>
                  //input has nothing in it here.
         }
       }
4

1 回答 1

0

SubmitBT_Click-click 事件发生在回发中。但是所有变量(和控件)都在页面生命周期结束时处理。所以你需要一种方法来坚持你的List,例如在ViewStateorSession中。

public List<String> Input
{
    get
    {
        if (Session["Input"] == null)
        {
           Session["Input"] = new List<String>();
        }
        return (List<String>)Session["Input"]; 
    }
    set { Session["Input"] = value; }
}

在 ASP.NET 应用程序中管理持久用户状态的九个选项

于 2013-02-19T21:43:11.210 回答