0

我想存储一些数据以在下一页使用它然后我将它插入到数据库中

Trip.TripID
Trip.BookingDate
Trip.Adult
Trip.Chile

并计算出多少次用于此的对象是什么

4

4 回答 4

1

如果它是一个小尺寸的对象,那么您可以将它存储在会话中。您唯一应该关心的是会话是在服务器端维护的。

您可以将对象存储在视图中。

Session["TripObject"] = TripObject;

并将其取回。

Trip sessionTripObject = (Trip) Session["TripObject"];
于 2012-11-27T12:45:19.400 回答
1

会话不止一次地咬我。

IMO 客户端状态不属于服务器,而不属于数据库(特别是如果您需要扩展到多个服务器,在这种情况下会话将失败,您需要使用数据库/会话将其关闭无论如何服务器)。

鉴于您几乎肯定已经在使用 cookie 来让您的用户保持登录状态,您可以轻松地存储另一个。

于 2012-11-27T12:46:45.163 回答
0

在会话中存储短时间值是对服务器内存的浪费。您可以在第二页检索时释放它,但¿如果用户关闭浏览器会发生什么?这些值一直在浪费内存,直到会话超时,在常见情况下大约需要 30 分钟。

正如 activwerx 所说,Cookie 可能会被禁用,如果数据是危险的,则必须对其进行加密。

将第一个页面中的公共属性与行程列表一起使用,使用 Page.PreviousPage 重定向和检索行程列表。

基本代码:

从源页面获取公共属性值 在源页面上,创建一个或多个公共属性并保存页面。

Public ReadOnly Property CurrentCity() As String
    Get
        Return textCity.Text
    End Get
End Property
public String CurrentCity
{
    get
    {
        return textCity.Text;
    }
}

注意 主要为公开跨页发布值而创建的源页面上的属性通常是只读属性。虽然源页面可以包含公共读/写属性,但从目标页面属性设置源页面属性通常没有任何意义,因为该值不会被持久化。

在目标页面上,添加@ PreviousPageType指向源页面的页面指令。

以下代码示例显示了引用名为 SourcePage.aspx 的源页面的 PreviousPageType 指令

<%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %> 

PreviousPageType 指令使页面的 PreviousPage 属性键入到源页面类。

在目标页面代码中,使用 PreviousPage 属性的强类型成员来读取源代码属性。

Label1.Text = PreviousPage.CurrentCity;

适用于 TargetPage 的帖子

源页面.aspx

<asp:Button 
  ID="Button1" 
  PostBackUrl="~/TargetPage.aspx"
  runat="server"
  Text="Submit" />

Server.Transfer(targetPage)

于 2012-11-27T13:11:51.467 回答
0

您在会话和 cookie 之间的决定涉及很多事情,但是对于仅在“单个会话”中的页面之间需要的小块数据,最好使用会话。

如果您想要持久的一般数据,如果您使用 cookie,则更好,但请注意,您应该始终考虑在 cookie 中丢失数据的可能性

于 2012-11-27T12:45:55.850 回答