0

我在一个随机数组中存储了一堆文本值。我动态地创建(在 VB 中)一个 checkboxList 然后将项目添加到这个列表中,项目的值是从随机数组中检索的。然后将 checkboxList 添加到页面上的 placeHolder。我通过 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 回答