我已经在一个随机化的数组中存储了一堆文本值。我动态创建(在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不正确。
关于解决这个问题的最佳方法是什么?
谢谢。
答案 0 :(得分: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