[英]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.