使用会话传递值并向每个页面添加第一个会话

时间:2013-03-28 09:24:33

标签: c# asp.net

我需要存储在textBox'sdropdownList's radio buttons中输入的值....我的表单是一个多页面表单。 我不确定我在做什么,但这就是我的想法。

我有一个点击下一页的按钮。我已经在数据库表中的每个字段创建了一个类,我想插入它。在按钮单击事件上,我想将值分配给session。这是我怎么做的?

protected void img_btnNext_Click(object sender, ImageClickEventArgs e)
{
Incident obj = new Incident();
obj.witnessesYes = rad_ReportYes.Checked;
obj.witnessesNo = rad_ReportNo.Checked;

// lots more objects .... to values

Session["mySession"] = obj;
Response.Redirect("~/Communicating.aspx");
}

所以当我进入下一页时,我还能继续吗?向obj添加更多值并将其添加到session?我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

是的,如果会话中的对象具有所有属性,则无论如何都可以操作它们。

var incident = Session["MyIncident"] != null ? (Incident)Session["MyIncident"] : new Incident();

答案 1 :(得分:0)

是的,这是解决方案之一,您可以做的是检查Session是否具有Object,如果是,则序列化它并添加更多内容并使用相同的密钥将其保存回会话中。如果为空,则创建新对象并启动。使用这种方法的问题之一是,如果您丢失了会话,则无法将其恢复(可能是服务器等问题)。如果您有更多步骤,最好在某些步骤后将其保存在DB等持久性位置。

if(Session[keyName] != NULL)
{
Incident existingValue = (Incident)Session[KeyName]
existingValue.XXXX = 10;
Session[KeyName] = existingValue ;
}
else
{
 Incident existingValue = new Incident()
 existingValue.XXXX = 10;
 Session[KeyName] = existingValue ;
}