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# 中执行此操作的最佳方法是什么?任何不错的链接或示例都会很棒!

4

4 回答 4

2

Http是无状态协议,你可以使用Session变量,将Person的对象存入Session["variable"] = [Object]最后一页访问。

于 2011-05-25T09:19:16.077 回答
2

例如将数据存储在会话中

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

因此,一旦将值存储在会话中,就可以从其他页面检索它。

于 2011-05-25T09:20:20.087 回答
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

于 2011-05-25T09:21:16.163 回答
1

如果您使用的是进程内会话状态模式,则可以将此类对象存储在会话中。

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

我想如果它是一些向导,你不需要存储大数据,所以你可以很好地处理会话状态。

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

于 2011-05-25T09:27:43.877 回答