我有一个完全令我难以置信的问题,因为它完全没有意义。好吧,正如我所理解并在过去使用的那样,通过会话将变量从一个页面传递到另一个页面,您只需说
Session [“variableName”] = value;
然后在接收页面中使用它,它类似于:
string container = Session [“variableName”]。ToString();
右?花花公子。在我的代码中(至少这个特定的应用程序,无论如何),我发现如果我的代码隐藏的page_load中有一个方法,我就无法设置任何会话变量:
protected void Page_Load(object sender, EventArgs e)
{
Session.Add("values", "It Worked");
LoadAvailableItems();
}
这将导致应用程序不将变量传递给下一页。但是,如果我删除LoadAvailableItems()方法,它将正常工作。所以现在你会问我“好的,所以请告诉我们这个方法的内容”。它只是为控件运行虚拟数据的测试连接:
//test connection DELETE ME
string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
+ Server.MapPath("App_Code/temp/cokeDb.mdb") + ";Persist Security Info=False;";
OleDbConnection conn = new OleDbConnection(connString);
string sql = "select docNum, docName from lut_docs order by docNum";
OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);
DataSet ds = new DataSet();
conn.Open();
da.Fill(ds);
conn.Close();
cblstAvailableItems.DataSource = ds;
cblstAvailableItems.DataTextField = "docName";
cblstAvailableItems.DataValueField = "docNum";
cblstAvailableItems.DataBind();
//end test connection
从我能够将其缩小到通过注释掉块并运行应用程序,我认为它与此块有关:
conn.Open();
da.Fill(ds);
conn.Close();
现在为什么这会导致问题,我丝毫不明白。如果有人可以向我解释这一点,我可以不要把头伸进墙里。