我在我的global.asax文件中創建了四列的數據表。我只將行添加到global.asax文件中的兩列數據表中。我正在嘗試從同一項目下的另一個.aspx.cs文件中添加另外兩行。當我嘗試添加該行時,它給我一個錯誤從不同文件的數據表中添加行
「名稱」dr「在當前上下文中不存在」。
我的代碼:
login.aspx.cs:
protected void btnLogin_Click(object sender, EventArgs e)
{
if(txtPassword.Text == "")
{
Server.Transfer("Main.aspx", true);
}
if(txtUserName.Text!= "" && txtPassword.Text!= "")
{
Server.Transfer("Userlog.aspx", true);
}
dr["username"] = Session["UserName"]; // username
dr["login_time"] = Session["LoginTime"]; //login time
}
的Global.asax:
void Session_Start(Object s, EventArgs e)
{
Application.Lock();
dt = new DataTable();
dt.Columns.Add(new DataColumn("session_id", System.Type.GetType("System.String")));
dt.Columns.Add(new DataColumn("username", System.Type.GetType("System.String")));
dt.Columns.Add(new DataColumn("login_time", System.Type.GetType("System.DateTime")));
dt.Columns.Add(new DataColumn("ip_address", System.Type.GetType("System.String")));
Application["visitorTable"] = dt;
DataRow dr = dt.NewRow();
dr["session_id"] = (System.String)Session.SessionID; // session id
dr["ip_address"] = Request.ServerVariables["SERVER_NAME"]; //ip-address
dt.Rows.Add(dr);
//dt = (DataTable)Application["visitorTable"];
Application["visitorTable"] = dt;
DataView view = new DataView(dt);
Application.UnLock();
}
你的問題與asp.net毫無關係(並沒有任何與MVC有關),但對本地變量'dr'範圍的簡單理解 - 簡而言之就是做這樣的事情,你必須宣傳'dr '到你的類中的一個靜態字段(**不推薦**) – Carsten
更具體一些:它看起來像你的代碼根本沒有任何意義(例如,你用'dt'創建一個'DataView'的實例但是這個本地對象似乎只是局部的) - 那麼首先要做的這點在哪裏呢?通常情況下(如果我正確讀取),你會想要將日期保存到數據庫中,然後(在登錄時)重新加載行,添加缺失的數據並從那裏更新數據庫行 - 如果你想在內存中使用'Session'對象(再次:不推薦) – Carsten