会话未传递到其他页面

时间:2014-02-26 05:23:47

标签: c# asp.net session webforms

我正在尝试使用会话将信息从一个页面传递到另一个页面,单击这样的发送按钮时会发生实际发送:

       protected void btnContactMsgSend_Click(object sender, EventArgs e)
    {
        Name = txtName.Text;
        EmailAddress = txtEmailAddress.Text;
        Subject = txtSubject.Text;
        MessageBody = txtMssgBody.Text;


        Session.Add("Name", Name);
        Session.Add("Email", EmailAddress);
        Session.Add("Subject", Subject);
        Session.Add("MessageBody", MessageBody);

        try
        {
            Server.Transfer("~/UserPages/ContactUsConfirm.aspx");
        }
        catch (Exception exc)
        {
            MessageBody = Environment.NewLine + "Error occurred" + exc.ToString() ;
        }
    }

在接收页面中,我执行以下操作:

protected void Page_Load(object sender,EventArgs e)         {

        string name = null;
        string email = null;
        string subject = null;
        string message = null;

        try
        {
            name = Convert.ToString(Session["Name"]);
            email = Convert.ToString(Session["Email"]);
            subject = Convert.ToString(Session["Subject"]);
            message = Convert.ToString(Session["MessageBody"]);
        }
        catch (Exception ex)
        {
            txtOutput.Text = Environment.NewLine + ex.ToString(); // edited exception

            name = "Missing name";
            email = "Missing e-mail";
            subject = "Missing subject";
            message = "Missing message";
        }
        txtOutput.Text = Environment.NewLine + name;
        txtOutput.Text = Environment.NewLine + email;
        txtOutput.Text = Environment.NewLine + subject;
        txtOutput.Text = Environment.NewLine + message;

    }

它不起作用,在接收页面中我没有得到任何输出。

有人可以帮忙吗?

谢谢

3 个答案:

答案 0 :(得分:1)

应该是......

Session["Name"] = Name;
Session["Email"] = EmailAddress;
Session["Subject"] = Subject;
Session["Message"] = MessageBody;

答案 1 :(得分:0)

问题似乎是由于某些设置没有为Sessions设置而产生的。

您是否为web.config中的enableSessionState="true"标记设置了pages。还尝试将会话添加到httpmodules部分:

<add name="Session" type="System.Web.SessionState.SessionStateModule"/> 

还有一件事是尝试使用Context.RewritePath代替Server.Transfer

答案 2 :(得分:0)

您没有为会话变量使用相同的名称。 Messagrbody和消息在设置和获取时是不同的。