繁体   English   中英

将数据结构保存在几页上?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM