次のページで使用するためにいくつかのデータを保存したいので、次のようにデータベースに挿入します
Trip.TripID
Trip.BookingDate
Trip.Adult
Trip.Chile
これに使用されるオブジェクトは何ですか
サイズが小さいオブジェクトの場合は、セッションに保存できます。唯一気をつけなければならないことは、セッションがサーバー側で維持されることです。
オブジェクトをseesionのように格納できます。
Session["TripObject"] = TripObject;
そしてそれを取り戻すために。
Trip sessionTripObject = (Trip) Session["TripObject"];
セッションは私を何度も噛みました。
IMO クライアントの状態は、DB 以外のサーバーには属していません (特に、複数のサーバーにスケールアウトする必要がある場合。その場合、セッションは失敗し、データベース/セッションでバックオフする必要があります)とにかくサーバー)。
ユーザーのログイン状態を維持するために既にほぼ確実に Cookie を使用していることを考えると、別の Cookie を簡単に保存できます。
セッションに短時間の値を保存すると、サーバー メモリが無駄になります。2 ページ目で取得するときに解放できますが、ユーザーがブラウザーを閉じるとどうなりますか? 値は、一般的なシナリオでは約 30 分のセッション タイムアウトまでメモリを浪費しています。
activwerx によると、データが危険な場合は Cookie を無効にすることができ、暗号化する必要があります。
旅行リストで最初のページのパブリック プロパティを使用し、リダイレクトして、Page.PreviousPage を使用して旅行リストを取得します。
基本コード:
ソース ページからパブリック プロパティの値を取得するには ソース ページで、1 つ以上のパブリック プロパティを作成し、ページを保存します。
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 への投稿で動作します
SourcePage.aspx
<asp:Button
ID="Button1"
PostBackUrl="~/TargetPage.aspx"
runat="server"
Text="Submit" />
とServer.Transfer(targetPage)
セッションと Cookie の間の決定には多くのことが関係しますが、「単一セッション」のページ間でのみ必要な小さなデータの場合は、セッションを使用する方が適切です。
永続的な一般データが必要な場合は、Cookie を使用している場合に適していますが、Cookie でデータが失われる可能性を常に考慮する必要があることに注意してください。