asp.net 跨页面传值
我用的是COOKIE方法传值.我的程序是通过一个登陆页面若登陆成功即跳转到另一个用于显示个人信息的页面,需要从前一个登陆页面拿几值在这个个人信息页面显示.现在有这个问题让...
我用的是COOKIE方法传值.
我的程序是通过一个登陆页面若登陆成功即跳转到另一个用于显示个人信息的页面,需要从前一个登陆页面拿几值在这个个人信息页面显示.
现在有这个问题让我百思不得其解
若我用Response.Redirect("个人信息.aspx");这个指令跳转到下个页面,COOKIE传值不成功
若我用Response.Write("<script>window.open('个人信息.aspx');</script>");这个指令跳转,在VS2005的IIS上传值成功,但若用IE通过区名打开,又传不了值了
若我用Server.Transfer("个人信息.aspx");这个指令跳转,在VS和IE上都能传值成功,可问题是如果我跳转到第二个页面后按"刷新"按扭或后退重新登陆,传值又不成功了
登陆页面的程序如下:
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Login_Click(object sender, EventArgs e)
{
string connect = @"server=(local);database=Test-ASP;uid=sa;pwd=";
SqlConnection thisConnection = new SqlConnection(connect);
thisConnection.Open();
string sql = "select * from Login where 用户名 ='"+TextBox_ID.Text+"'" ;
SqlCommand thisCommand = thisConnection.CreateCommand();
thisCommand.CommandText = sql;
SqlDataReader thisReader = thisCommand.ExecuteReader();
if (!thisReader.HasRows)
{
Response.Write("<script>alert('用户名不存在');</script>");
return;
}
while(thisReader.Read())
{
if (thisReader["密码"].ToString().Trim() != TextBox_Pw.Text.Trim())
{
Response.Write("<script>alert('口令错误');</script>");
return;
}
else
{
//将信息用COOKIE保存
HttpCookie cookie = new HttpCookie("cookie_log");
cookie.Values.Add("用户名", thisReader["用户名"].ToString().Trim());
cookie.Values.Add("呢称", thisReader["呢称"].ToString().Trim());
cookie.Values.Add("性别", thisReader["性别"].ToString().Trim());
cookie.Values.Add("电子邮箱", thisReader["电子邮箱"].ToString().Trim());
Response.AppendCookie(cookie);
//Response.Redirect("个人信息.aspx");
Server.Transfer("个人信息.aspx");
//Response.Write("<script>window.open('个人信息.aspx');</script>");
}
}
}
个人信息页面程序
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie cookie = Request.Cookies["cookie_log"];
Label_ID.Text = cookie.Values["用户名"];
Label_NickName.Text = cookie.Values["呢称"];
Label_Sex.Text=cookie.Values["性别"];
Label_Email.Text = cookie.Values["电子邮箱"];
}
哪位大哥能不怕麻烦帮我解决这个问题,回答尽量详细点,还要告诉我解决的方法,小弟在此不胜感激,还会追加分数,这个问题真的捆扰我好久了,希望得到很好的解决 展开
我的程序是通过一个登陆页面若登陆成功即跳转到另一个用于显示个人信息的页面,需要从前一个登陆页面拿几值在这个个人信息页面显示.
现在有这个问题让我百思不得其解
若我用Response.Redirect("个人信息.aspx");这个指令跳转到下个页面,COOKIE传值不成功
若我用Response.Write("<script>window.open('个人信息.aspx');</script>");这个指令跳转,在VS2005的IIS上传值成功,但若用IE通过区名打开,又传不了值了
若我用Server.Transfer("个人信息.aspx");这个指令跳转,在VS和IE上都能传值成功,可问题是如果我跳转到第二个页面后按"刷新"按扭或后退重新登陆,传值又不成功了
登陆页面的程序如下:
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Login_Click(object sender, EventArgs e)
{
string connect = @"server=(local);database=Test-ASP;uid=sa;pwd=";
SqlConnection thisConnection = new SqlConnection(connect);
thisConnection.Open();
string sql = "select * from Login where 用户名 ='"+TextBox_ID.Text+"'" ;
SqlCommand thisCommand = thisConnection.CreateCommand();
thisCommand.CommandText = sql;
SqlDataReader thisReader = thisCommand.ExecuteReader();
if (!thisReader.HasRows)
{
Response.Write("<script>alert('用户名不存在');</script>");
return;
}
while(thisReader.Read())
{
if (thisReader["密码"].ToString().Trim() != TextBox_Pw.Text.Trim())
{
Response.Write("<script>alert('口令错误');</script>");
return;
}
else
{
//将信息用COOKIE保存
HttpCookie cookie = new HttpCookie("cookie_log");
cookie.Values.Add("用户名", thisReader["用户名"].ToString().Trim());
cookie.Values.Add("呢称", thisReader["呢称"].ToString().Trim());
cookie.Values.Add("性别", thisReader["性别"].ToString().Trim());
cookie.Values.Add("电子邮箱", thisReader["电子邮箱"].ToString().Trim());
Response.AppendCookie(cookie);
//Response.Redirect("个人信息.aspx");
Server.Transfer("个人信息.aspx");
//Response.Write("<script>window.open('个人信息.aspx');</script>");
}
}
}
个人信息页面程序
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie cookie = Request.Cookies["cookie_log"];
Label_ID.Text = cookie.Values["用户名"];
Label_NickName.Text = cookie.Values["呢称"];
Label_Sex.Text=cookie.Values["性别"];
Label_Email.Text = cookie.Values["电子邮箱"];
}
哪位大哥能不怕麻烦帮我解决这个问题,回答尽量详细点,还要告诉我解决的方法,小弟在此不胜感激,还会追加分数,这个问题真的捆扰我好久了,希望得到很好的解决 展开
展开全部
我觉得不可能是Response.Redirect("个人信息.aspx")和Response.Write("<script>window.open('个人信息.aspx');</script>");的问题。你可以在cookie.Values.Add("")后输出你赋值的cookie,然后加response.end()停止执行。看看cookie到底有没有赋值成功。然后在找原因。或者加断点,一步步执行找原因。
另提一个建议,你可以在 个人信息.aspx 加?name=xx 然后在个人信息.aspx页面获取name查询数据库然后直接给lable赋值不是更好吗?
你用cookie容易泄露信息。
另提一个建议,你可以在 个人信息.aspx 加?name=xx 然后在个人信息.aspx页面获取name查询数据库然后直接给lable赋值不是更好吗?
你用cookie容易泄露信息。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询