我正在尝试使用会话将信息从一个页面传递到另一个页面,单击这样的发送按钮时会发生实际发送:
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;
}
它不起作用,在接收页面中我没有得到任何输出。
有人可以帮忙吗?
谢谢
答案 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和消息在设置和获取时是不同的。