0

ランダム化された配列に一連のテキスト値を保存しました。私は(VBで)checkboxListを動的に作成し、このリストにアイテムを追加します。アイテムの値はランダム化された配列から取得されます。次に、checkboxList がページのプレースホルダーに追加されます。onPage Init を使用して、checkboxList と listItems を動的に作成します。

問題は、ページを送信するときに、ページが動的に作成されたコンテンツを失うため、checkboxList を再度作成する必要があることですが、配列がランダム化されているため、次に要素が再作成されたときに、ASP は間違った listItems が選択されました。例:
配列: {1, 2, 3 , 4]
ランダム化後: [3,4,2,1]

ページは次のようにページ上にチェックボックス リストを作成します:
|--| 3
|--| 4
|--| 2
|--| 1

ここで、値 3 を選択して送信ボタンを押します。

送信後、同じ関数を使用して (ランダム化を使用して) チェックボックス リストが再作成されるため、チェックボックス リストは次のようになります
。2
|--| 1
|--| 4
|--| 3

ASP は、送信された選択された要素が実際には最初の値 (以前は 3 でしたが、現在は 2) であると考えているため、送信によって値 2 が生成されたことがわかりますが、これは正しくありません。

これを回避する最善の方法についてのアイデアはありますか?

ありがとうございました。

4

1 に答える 1

0

次のように、ページが最初にロードされたとき (Page_Loadイベント) にのみリストをランダム化し、配列の順序をSessionキャッシュに保存します。

If Not Page.IsPostBack Then
    ' Put randomize logic here

    ' Remember the order by placing the order in Session
    Session("ArrayForOrder") = theArray
End If

動的コンテンツの再構築に関しては、次のElseようにブロックに入れます。

If Not Page.IsPostBack Then
    ' Put randomize logic here

Else
    ' Put logic here to get the array out from Session to figure out the order
    theArray = CType(Session("ArrayForOrder"), Integer())
End If
于 2013-08-05T15:30:42.150 に答える