2011-05-25 48 views
0

我正在使用.NET 3.5,当您在不同页面之间进行传输时,如何保存数据对象,我需要一些帮助。将数据结构保存在多个页面上?

这是我的设置:

我有一个四步登记,其中每一个步骤包括它自己的网页。我希望能够在页面之间保存一个对象而不将其保存到数据库中。每个页面都会为此对象添加一些内容。

只是为了便于它,可以说我有一个像

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#中做到这一点的最佳方式?任何不错的链接或样本都会很棒!

回答

2

您可以使用会话/ cookie来保存数据。

请参阅下面如何使用会话的示例代码。

如何:在会话状态保存价值

string firstName = "Jeff"; 
string lastName = "Smith"; 
string city = "Seattle"; 
Session["FirstName"] = firstName; 
Session["LastName"] = lastName; 
Session["City"] = city; 

如何从会话状态读取值

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

2

Http是无状态协议,您可以使用Session变量并将Person的对象存储到Session["variable"] = [Object]并在最后一页上访问它。

2

商店例如

Session["Test"] = "Hello World"; //store in session 
string str = (string)Session["Test"];//retrieving from session 

所以在会话中的数据,一旦值存储在会话中,可以从其他的网页检索。

1

如果您使用在 - 进程会话状态模式,你会很好地存储会话中的这种对象。

否则,你需要泰勒一些自定义的方法,因为SQL和StateServer模式将在每次你想要检索和存储它时对这个对象进行序列化和反序列化 - 不太理想。使用会话状态,即使在这种操作模式下,如果对象像字符串,整数或任何其他基本类型一样简单(这在性能方面不会有问题)。

我想如果这是一个向导,你将不需要存储大量数据,所以你可以很好的会话状态。

也许你想存储文本或其他一些大的东西,我相信最好的解决方案是看看Windows Workflow Foundation有一个持久性的存储API,所以你可以管理一个工作流程(如向导)并保存在完成一些步骤后的某种状态,但我再说一遍,这可能是一个很好的矫枉过正。如果此用户注册向导需要大量信息,请采取此建议。

+0

+1非常好的反馈。就我而言,我认为尽管我希望有其他事情,但会议仍将进行。 – Marthin 2011-05-26 06:39:28

相关问题