Asp.net 回发后,如果选定值旋转,如何访问复选框列表?

Asp.net 回发后,如果选定值旋转,如何访问复选框列表?,asp.net,vb.net,postback,checkboxlist,Asp.net,Vb.net,Postback,Checkboxlist,我在一个随机数组中存储了一组文本值。我(在VB中)动态创建一个复选框列表,然后将项目添加到此列表中,项目的值从随机数组中检索。然后将复选框列表添加到页面上的占位符中。我通过onPage Init动态创建复选框列表和列表项 问题是,当您提交页面时,您需要再次重新创建复选框列表,因为页面会丢失动态创建的内容,但是由于数组是随机的,所以下次重新创建元素时,ASP会返回错误的所选列表项。例如: 数组是:{1,2,3,4] 随机化后:[3,4,2,1] 页面在页面上创建复选框列表为: |--|3 |--

我在一个随机数组中存储了一组文本值。我(在VB中)动态创建一个复选框列表,然后将项目添加到此列表中,项目的值从随机数组中检索。然后将复选框列表添加到页面上的占位符中。我通过onPage Init动态创建复选框列表和列表项

问题是,当您提交页面时,您需要再次重新创建复选框列表,因为页面会丢失动态创建的内容,但是由于数组是随机的,所以下次重新创建元素时,ASP会返回错误的所选列表项。例如:
数组是:{1,2,3,4]
随机化后:[3,4,2,1]

页面在页面上创建复选框列表为:
|--|3
|--|4
|--|2
|--|1

现在我选择值3并按下提交按钮

提交后,使用相同的功能(随机)重新创建复选框列表,因此复选框列表变为:
|--|2
|--|1
|--|4
|--|3

ASP认为提交的选定元素实际上是第一个值(以前是3,但现在是2),因此它告诉我提交生成的值2不正确

有没有关于最好的解决办法的想法


谢谢。

仅在页面最初加载时随机化列表(
page\u Load
事件),并将数组的顺序存储在
会话
缓存中,如下所示:

If Not Page.IsPostBack Then
    ' Put randomize logic here

    ' Remember the order by placing the order in Session
    Session("ArrayForOrder") = theArray
End If
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
至于重建动态内容,请将其放入
Else
块中,如下所示:

If Not Page.IsPostBack Then
    ' Put randomize logic here

    ' Remember the order by placing the order in Session
    Session("ArrayForOrder") = theArray
End If
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

谢谢你,这就是我要找的(我用viewState代替session,但基本上是一样的)。非常感谢Karl!