各位大侠们,我在做一个留言板的时候遇到了一个问题.. 我的功能是这样的. 用户留言后按preview的button就可以跳转到下一页去看看,然后确定我误之后就再按SEND的button发出去.. 如果有问题的话可以按modify的button跟转回上一页去修改..  我之前遇到过页面跳转后值保留的问题.. 现在我用的是先把所以 的值放入SESSION里面传到下一页, 如果要修改.就跳转回上一页,再从session里面把值放进每一个textbox里面..  这一切看来还OK..  不过现我就发现了一个问题. 就是当我修改的时候, 页面跳回第一页后, 我改了textbox的内容再按preview后, 在第二个页面里的内容却没有改变..  我debug过我的代码.. 第一页的textbox.text根本没有改变即使我修改的textbox的内容..  
顺带提一下, 我之前试过用javascrit:window.history.go(-1)这个来返回上一页. 不过有IE7里面 就不可以保留之前输入的内容.. 但是firefox里面就可以.. 为什么呢?? 
以下是我的代码.. feedback.aspx 是第一页, feedbackReview.aspx 是第二页.. 
feedback.aspx
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;    public partial class feedback : System.Web.UI.Page
    {
        
        clsPushData push = new clsPushData();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.QueryString["method"].ToString() == "1")
            {
                title.Text = Session["title"].ToString();
                subject.Text = Session["subject"].ToString();
                subject2.Text = Session["subject2"].ToString();
                description.Text = Session["content"].ToString();
                name.Text = Session["name"].ToString();
                email.Text = Session["email"].ToString();
                country.Text = Session["country"].ToString();
            }
        }
        protected void preview_Click(object sender, EventArgs e)
        {
           // Session.Abandon();
            Session["title"] = title.Text;
            //if (subject.Text == "other")
            //{
                Session["subject"] = subject.Text;
                Session["subject2"] = subject2.Text;
            //}
            //else
            //{            //    Session["subject"] = subject.Text;
            //    Session["subject2"] = subject2.Text;
            //}
              //  Session["content"] = null;
            Session["content"] = description.Text;
            Session["name"] = name.Text;
            Session["email"] = email.Text;
            Session["country"] = country.Text;
            Response .Redirect ("feedbackReview.aspx");
        }          }
feedbackReview.aspx
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class feedbackReview : System.Web.UI.Page
{
    
    protected void Page_Load(object sender, EventArgs e)
    {
        subject.Text = Session["subject"].ToString();
        content.Text = Session["content"].ToString();
        title.Text = Session["title"].ToString();
        name.Text = Session["name"].ToString();
        email.Text = Session["email"].ToString();
        country.Text = Session["country"].ToString();
    }    protected void modify_Click(object sender, EventArgs e)
    {
        Response.Redirect("feedback.aspx?method=1");
    }
}谢谢各位....

解决方案 »

  1.   

    哥,当你修改了值之后,你是不是要把值放到session里边啊,但是现在你的session里边换是有值的,我看了你的代码好像没有清空,感觉应该是先把session请空之后在放进去新的值,而且你这个代码换有个问题,你的session是放在页面加载的那个内容里边的,感觉应该是在第一次加载之后就不在加载,放在  if (!Page.IsPostBack)
            {
             放这里
            }
    这个是我自己的感觉,我也很菜,不知道对不对,看你的了
      

  2.   

    关于session清空的问题.. 我试过清空之后再放新的值..不过我在Debug下发现.. 在feedback.aspx里,就算的在页面上修改了.但是description.text的值还是没变.. 我不懂为什么..er... 那个加载的问题..你觉得如果我把那段东西放在页面来做..会不会出现问题呢??  
      

  3.   

    哈哈.. 你说中了我想做的那个样子..  不过重点是..我不会做阿..我想应该是用javascript吧?  能教教我吗??
      

  4.   


    我最经也做过类似的功能,就是用的这种方法,你可以在存入数据库的时候返回这条纪录的ID号,然后根据这个ID去修改纪录,如果有问题家我QQ:249468903,也许能帮到你
      

  5.   


    这种方法是好.. 不过.我考虑到如果用户用的不是宽带的话. 数据经常传入数据库再拿出来的话. 可能会很慢..  所以我还是想做那种点击button后弹出一个window..  window里有个botton是send那就最好了..  顺带一提..  我在textbox中的内容带有回车换行.. 但是当传值到下一页时就没有换行.. 这是什么呢??  是因为session中不支持这样??  还是?  我应该怎样解决呢??  
      

  6.   

    Session的默认保存时间是20分钟,这个时间范围之内你可能改变不了它的值
      

  7.   


    但是.. 我将feedback.aspx.cs中的page_load里面的代码移到页面上..  就所以问题都解决了..  这是为什么呢? 我觉得不会是默认保存时间的问题..