2013-03-28 65 views
1

我需要存储输入的值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?我不知道如何做到这一点。

回答

1

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

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

所以,当我去到下一个页面就可以一直将我的对象的会话,并在年底提交我的OBJ到的SaveChanges() – StudentRik 2013-03-28 09:30:10

+0

您需要重新加载现有的会话对象(如果有) ,但是,是的,你可以在很多页面上做到这一点,并在适当的时候坚持下去。 – ChrisBint 2013-03-28 09:31:00

+0

如何重新加载现有会话 – StudentRik 2013-03-28 09:31:54

0

是的,这是解决方案之一,你可以做的是检查会话是否有对象,如果是,那么序列化,并添加更多的内容,并使用相同的密钥将其重新保存会话。如果它是空的,则创建新对象并启动。这种方法的问题之一是如果你失去了会话,你就无法恢复(可能是服务器等问题)。如果你有更多的步骤,最好将它保存在像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 ; 
} 
+1

序列化与在Session中存储对象有关吗? – ChrisBint 2013-03-28 09:29:06

+0

如何在没有序列化的情况下在Session中存储任何对象,通常.NET框架为我们提供了帮助,但需要完成。我上面更新了我的代码。我可以知道我为什么有-1 – Devesh 2013-03-28 09:33:36

+0

不知道。我没有标记这一点。 – ChrisBint 2013-03-28 09:40:08