2013-03-28 75 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