ASP.net表单没有传递ddl值

时间:2011-12-09 17:08:19

标签: asp.net vb.net forms selecteditem

我有一个包含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 =%

2 个答案:

答案 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....