我有一个包含2个下拉列表和一个提交按钮的表单。
我希望在提交列表时传递URL中列表的值,但由于某种原因,ddl的初始值将被传递。
这是我的代码:
<form runat="server">
<asp:DropDownList runat="server" ID="ddlCategory" />
<asp:DropDownList runat="server" ID="ddlLocation" />
<asp:button runat="server" ID="searchTT" OnClick="searchmyTT" Text="SEARCH" />
</form>
Sub searchmyTT(Source As Object, e As EventArgs)
Response.Redirect("/?cat=" & ddlCategory.SelectedItem.Value & " loc=" & ddlLocation.SelectedItem.Value)
End Sub
最终被重定向到 /?cat =%&amp; loc =%
答案 0 :(得分:3)
您可能在事件代码被触发之前填充DDL。填充其值时,它会将所选值重置为第一个索引。将您的人口代码包含在以下内容中:
If Not IsPostBack Then
//Populate DDL
End If
有关ASP.net生命周期的参考,请参阅此处:http://msdn.microsoft.com/en-us/library/ms178472.aspx#lifecycle_events
在这种情况下,重要的是加载和控制事件(请注意加载发生在控制事件之前)
编辑:修复VB语法 - 我有点生疏
EDIT2:添加对ASP.Net生命周期的引用
答案 1 :(得分:1)
为什么不使用
ddlCategory.SelectedValue
首先应该阅读:
Response.Redirect("/?cat=" & ddlCategory.SelectedItem.Value & "&loc=" & ddlLocation.SelectedItem.Value)
第二次检查你page_load确保绑定你的ddl的内部
If Not IsPostBack Then
ddlLocation.Bind....