C# 在会话中保存已创建的对象
我试图创建一个对象,然后将其保存在会话中,然后重定向到另一个页面并使用会话中保存的对象 这是我的代码,它似乎是错误的地方,因为它是不可操作的 第1页C# 在会话中保存已创建的对象,c#,asp.net,session-state,C#,Asp.net,Session State,我试图创建一个对象,然后将其保存在会话中,然后重定向到另一个页面并使用会话中保存的对象 这是我的代码,它似乎是错误的地方,因为它是不可操作的 第1页 public FitnessClassOpportunity GetData() { return new FitnessClassOpportunity(txtId.Text, txtDescription.Text, txtLocation.Text,
public FitnessClassOpportunity GetData()
{
return new FitnessClassOpportunity(txtId.Text, txtDescription.Text, txtLocation.Text,
Convert.ToInt32(tx2.Text), dropDownDay.SelectedItem.ToString(),
txtTime.Text, Convert.ToInt32(txtDuration.Text), CheckBox1.Checked,
txtDatecompleted.Text, txtNumSession.Text);
}
protected void Button1_Click(object sender, EventArgs e)
{
//result from breaking point: f has the data
FitnessClassOpportunity f = GetData();
//result from breaking point: f still has the data but Session is still NULL
Session["object"] = f;
Response.Redirect("Default.aspx");
}
第2页
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
}
else
{
//add the object from the session to a list
fitnessClassList.addFitnessClass((FitnessClassOpportunity)Session["object"]);
UpdateListbox();
}
}
如果执行重定向,则不再是回发,并且不会执行将对象添加到列表中的代码。运行调试器,您将看到 编辑: 会话状态可能已禁用。在web.config中设置此选项(应为默认值):
...
什么是fitnessClassList
以及addFitnessClass
是什么?您是否收到任何错误?您确定重定向被视为回发吗?我的猜测是代码根本没有执行。我认为您应该将addFitnessClass&UpdateListbox代码移动到if.fitnessClassList的then分支,它是一个对象列表。我没有得到任何错误,只是执行代码时什么也没有发生,因为会话是空的。我甚至不能得到进一步的(转到另一页使用重定向)谢谢你。我主要担心的是会话没有接受我传递给它的值(F变量)。您是否在web.config中启用了会话状态?如果会话为null,会话[“object”]将引发异常。如果是,则您已关闭sessionState。它不会。我甚至没有得到任何错误,只是没有将F中的值赋给Session变量。我认为会话状态是自动启用的。我没有启用它,不是说我知道如何启用它,但是..这个任务真的很奇怪,我不明白为什么它没有将信息从f传递到Session如果你说Session为null(在对Henk Holtermann的评论中),那么它将被关闭并抛出异常。将sessionState元素添加到配置中,然后重试。
<system.web>
<sessionState mode="InProc"/>
...
</system.web>