问题描述
|
我使用的是.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#做到这一点的最佳方法是什么?任何不错的链接或示例都将很棒!
解决方法
您可以使用会话/ 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/zh-cn/library/ms178581.aspx#CodeExamples
,Http是无状态协议,可以使用Session变量并将Person对象存储到3中,并在最后一页访问它。
,例如将数据存储在会话中
Session[\"Test\"] = \"Hello World\"; //store in session
string str = (string)Session[\"Test\"];//retrieving from session
因此,一旦将值存储在会话中,就可以从其他页面检索它。
,如果您使用进程内会话状态模式,则可以在会话中存储此类对象。
否则,您将需要采用一些自定义方法,因为SQL和StateServer模式每次在您要检索和存储对象时都会对该对象进行序列化和反序列化-不太理想-。即使您的对象像具有字符串,整数或任何其他基本类型一样简单(即使在性能方面也没有问题),即使在此操作模式下也要使用会话状态。
我想如果它是某种向导,则您不需要存储大数据,因此您可以使用会话状态。
也许您想存储文本或其他一些大东西,我相信最好的解决方案是看一下具有持久性存储API的Windows Workflow Foundation,以便您可以管理工作流(如向导)并在完成后保存一些状态某个步骤,但我重复一遍,这可能是一个很好的矫kill过正。如果此用户注册向导需要大量信息,请采取此建议。