你把button_clicked()事件的代码贴出来看看。

解决方案 »

  1.   

    其它的代码都正确,但是取session里的值就是null.
    string aa=(string)Session["subject"];
    aa的值=null.
    而在page_load()里相同的语句是可以读出值的
      

  2.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.OleDb;
    using System.Timers;
    namespace forum
    {
    /// <summary>
    /// reply 的摘要说明。
    /// </summary>
    public class reply : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.TextBox txtReply;
    protected System.Web.UI.WebControls.Button submit;
    protected System.Web.UI.WebControls.Label labUserID;
    protected System.Web.UI.WebControls.Label labSubject;
    protected System.Web.UI.WebControls.Label labContent;
    protected System.Web.UI.WebControls.Label labDatetime;
    protected System.Web.UI.WebControls.Repeater myRepeater;
    protected string strSubject;
    protected string strUserID;
    protected string strContent;
    protected string strDt;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面

    if(!Page.IsPostBack)
    {   loadSession();
    loadReplyData();
    }
    else
    {
    loadSession();
    }
    }
    private void loadSession()
    {
    strUserID=(string)Session["userID"];
    Session["userID"]=strUserID;
    strContent=(string)Session["content"];
    strSubject=(string)Session["subject"];
    Session["subject"]=strSubject;
    strDt=(string)Session["Datetime"];
    //帖子的信息
    labUserID.Text="<font color=blue>"+strUserID+"</font>";
    labSubject.Text="<font color=blue>"+strSubject+"</font>";
    labContent.Text="<font color=blue>&nbsp&nbsp"+strContent+"</font>";
    labDatetime.Text="<font color=blue>"+strDt+"</font>";
    }
    private void loadReplyData()
    {

    OleDbConnection conn;

    string filedata="bin/forum.mdb";
    string strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(filedata)+";Persist Security Info=False;";
    try
    {
    conn=new OleDbConnection(strConnect);
    string query="SELECT subject,userID,content,datetime FROM questions where questionID="+Int32.Parse(Request.QueryString["ID"])+"  ORDER BY questionID,datetime"; 
    DataSet ds = new DataSet() ;
    conn.Open() ;
    OleDbDataAdapter command = new OleDbDataAdapter(query,conn);
    command.Fill(ds,"questions");
    DataTable dt=ds.Tables["questions"];
    myRepeater.DataSource=dt.DefaultView;
    myRepeater.DataBind();
    conn.Close();
    }
    catch(Exception ee)
    {
    Response.Write("error:"+ee.ToString());
    }
    finally
    {
    }
    } #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.submit.Click += new System.EventHandler(this.submit_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void submit_Click(object sender, System.EventArgs e)
    {
    /*string strTemp=txtReply.Text;
    textConvert p=new textConvert(strTemp);
    string strReply=p.ToString();
    string filedata="bin/forum.mdb";
    string strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(filedata)+";Persist Security Info=False;";
    string InsertSql="";
    OleDbCommand command;
    //InsertSql = "INSERT INTO questions ([category],[userID],[subject],[content],[questionID],[datetime]) VALUES";
    //InsertSql +="(@category,@userID,@subject,@content,@questionID,@datetime)";
    InsertSql = "INSERT INTO questions ([userID],[subject],[content]) VALUES";
    InsertSql +="(@userID,@subject,@content)";
    try
    {
    OleDbConnection conn=new OleDbConnection(strConnect);
    conn.Open();
    command=new OleDbCommand(InsertSql,conn);
    //command.Parameters.Add(new OleDbParameter("@category", OleDbType.Integer));
    command.Parameters.Add(new OleDbParameter("@userID",OleDbType.VarChar));
    command.Parameters.Add(new OleDbParameter("@subject",OleDbType.VarChar));
    command.Parameters.Add(new OleDbParameter("@content",OleDbType.VarChar));
    //command.Parameters.Add(new OleDbParameter("@questionID",OleDbType.Integer));
    //command.Parameters.Add(new OleDbParameter("@datetime",OleDbType.DBTimeStamp));
    //command.Parameters["@category"].Value =13;//Int32.Parse(Session["category"].ToString());
    command.Parameters["@userID"].Value = (string)Session["userID"]; //读不出
    command.Parameters["@content"].Value = strReply;
    //command.Parameters["@questionID"].Value = ;
    //command.Parameters["@datetime"].Value=DateTime.Now;
    command.ExecuteNonQuery();
    conn.Close();
    }
    catch(Exception ee)
    {
    Response.Write(ee.ToString()); }*/

    }
    }
    }
      

  3.   

    strUserID=(string)Session["userID"];
    Session["userID"]=strUserID;
    strContent=(string)Session["content"];
    strSubject=(string)Session["subject"];
    Session["subject"]=strSubject;
    strDt=(string)Session["Datetime"];这一段,很奇怪的代码,另外,你的userID在哪里往Session加进去的
      

  4.   

    你什么时候给Session["userID"];赋的值
      

  5.   

    strUserID="你要的值“
    Session["userID"]=strUserID;
    strSubject="你要的值”
    Session["subject"]=strSubject;
    你原来的代码并没有赋值,我想你应该不会在gloable里面赋值把,一般应该在你的登录业面赋值!
      

  6.   

    上一个页面里.
    在page_load()里可以读出session的值的.
    那一段怪的代码是我测试了一下,我想看看session里的值,读出后是不是就没了,要重新加入
      

  7.   

    你用VS.Net调试一下,再出问题的地方下个断点看看Session里面是不是有这个值我觉得不应该是Session的问题
      

  8.   

    我是在上个页面的一个linkButton的执行代码中加入session的值