我试图重现该问题,但在我的情况下它工作正常。
我在名为 default.aspx 的页面中添加了一个按钮和一个下拉列表
<li class="three">
<asp:Button ID="Button1" runat="server" Text="Button" />
<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
</li>
在 Page.Load 事件处理程序中,我将三个 ListItem 放在 dropDownlist 中,在 Button.Click 事件处理程序中,我添加了一个会话属性,其中包含 DropDownList 中的 selectedValue
这里是代码
Public Class _Default
Inherits Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim item1 As ListItem = New ListItem("Test A", "test A", True)
Dim item2 As ListItem = New ListItem("Test AB", "test AB", True)
Dim item3 As ListItem = New ListItem("Test C", "test C", True)
DropDownList1.Items.Add(item1)
DropDownList1.Items.Add(item2)
DropDownList1.Items.Add(item3)
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Session("variable") = "Test value"
Session("thevalue") = DropDownList1.SelectedValue
Response.Redirect("default2.aspx")
End Sub
结束类
当点击按钮时,我将 SelectedValue 提供给 Session("theValue") 并重定向到 default2.aspx。在 default2.aspx 中,我只是在检索 Session 属性后使用 Page.Load 事件在 Response 流上写入:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim myvariable As String = Session("variable")
Response.Write("the found value is" + myvariable)
Dim theValue As String = Session("thevalue")
Response.Write("<Br/> from drop down =" + theValue)
End Sub
一切正常。
例如,当我从 DropDownlist 中选择第二项时,我得到以下结果
找到的值为测试值
从下拉 =test AB
所以问题出在其他地方。您可以检查并查看是否在 Page.Load 事件中正确处理 IsPostBack。如果您可以分享更多代码,那将有所帮助。