[英]Hold a data structure over several pages?
我正在使用 .NET 3.5,當您在不同頁面之間傳輸時,我需要一些有關如何保存數據 object 的幫助。
這是我的設置:
我有一個四步注冊,其中每個步驟都包含自己的 web 頁面。 我希望能夠在頁面之間的 memory 中保存 object 而不將其保存到數據庫中。 每個頁面都會為這個 object 添加一些內容。
只是為了方便起見,假設我有一個 object 之類的
public class MyObject
{
private int myNumber;
private String myName;
private List<Person> myFriends; //Person is simply a class that has a Strign name with getter and setters.
public MyObject()
{
myFriends = new List<Person>();
}
public void setMyNumber(int i){
myNumber = i;
}
public void setMyName(String n)
{
myName = n;
}
public void setMyFriends(List<Person> li)
{
myFriends = li;
}
public void addFriend(Person p)
{
myFriends.Add(p);
}
}
當我到達最后一頁並收集了所有數據時,我會將其提交到我的數據庫中。 在 c# 中執行此操作的最佳方法是什么? 任何不錯的鏈接或示例都會很棒!
Http 是無狀態協議,可以使用 Session 變量,將 Person 的 object 存入Session["variable"] = [Object]
並在最后一頁訪問。
例如將數據存儲在 session 中
Session["Test"] = "Hello World"; //store in session
string str = (string)Session["Test"];//retrieving from session
因此,一旦該值存儲在 session 中,就可以從其他頁面檢索。
您可以使用會話/cookie 來保存數據。
session的使用示例代碼見下方。
如何:在 Session State 中保存值
string firstName = "Jeff";
string lastName = "Smith";
string city = "Seattle";
Session["FirstName"] = firstName;
Session["LastName"] = lastName;
Session["City"] = city;
如何:從 Session State 讀取值
string firstName = (string)(Session["First"]);
string lastName = (string)(Session["Last"]);
string city = (string)(Session["City"]);
參考:
http://msdn.microsoft.com/en-us/library/ms178581.aspx#CodeExamples
如果您正在使用進程內 session state 模式,則可以將此類 object 存儲在 Z21ED454240CFBE2508A.
否則,您需要定制一些自定義方法,因為 SQL 和 StateServer 模式將在每次您想要檢索和存儲它時序列化和反序列化 object - 不太理想 -。 使用 session state,即使在這種操作模式下,如果您的 object 與字符串、整數或任何其他基本類型一樣簡單(就性能而言這不會是問題)。
我想如果它是一些向導,您將不需要存儲大量數據,因此您可以使用 session state。
也許您想存儲文本或其他一些重要的東西,我相信最好的解決方案是查看 Windows Workflow Foundation,它具有持久存儲 API 以便您可以管理工作流程(如您的向導)並在完成后保存一些 Z9ED39E2EA931586B6EZ85733一些步驟,但我再說一遍,這可能是一個很好的矯枉過正。 如果此用戶注冊向導需要大量信息,請采納此建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.