一般的な問題:
私はこれに似たものを作成しようとしています:
ユーザーはドロップダウンから製品を選択し、[追加] をクリックすると、[追加された製品] セクションの下に別の製品行が追加されます。各行のドロップダウンから追加された製品ごとに「製品記述子」を選択する必要があります。ユーザーが [送信] ボタンをクリックした場合にのみ、各製品行がデータベースに挿入されます。
質問:
ポストバック間で製品の選択を保持する最良の方法は何ですか?
「製品記述子」の選択を保持することについては心配していません。それができると信じています。私の主な関心事は、これらの一時的な選択をデータベースに保存する前に保存する最善の方法を見つけることです。
私の現在のアプローチ:
私が今やっている方法は、ビューステートで ProductListItem オブジェクトのリストを管理することです。このリストは、追加された製品を表示する ListView にバインドされています。
Private Property SelectedProductList As List(Of ProductListItem)
Get
Return CType(ViewState("SelectedProductList"), List(Of ProductListItem ))
End Get
Set(ByVal value As List(Of ProductListItem ))
ViewState("SelectedProductList") = value
End Set
End Property
ProductListItem クラス:
<Serializable()>
Public Class ProductListItem
Public Property ProductID As Integer
Public Property ProductName As String
' ProductDescriptor class represents Product Descriptor (details omitted)
Public Property Descriptor As ProductDescriptor
' Constructor omitted
End Class
Add Button Click ハンドラー:
Protected Sub btnAddProduct_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAddProduct.Click
SelectedProductList.Add( New ProductListItem(...) )
ProductListView.DataSource = SelectedProductList
ProductListView.DataBind()
End Sub
ここではViewstateの代わりにSessionを使用することを考えています.同じページに他にも2つの同様の状況があり、ビューステートにオブジェクトのリストを保持しており、Viewstateが破損したり取得したりするのが心配です.大きすぎる。どう思いますか?
御時間ありがとうございます!