【问题标题】:ASP.net form not passing ddl valuesASP.net 表单不传递 ddl 值
【发布时间】:2012-01-16 23:00:28
【问题描述】:

我有一个带有 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=%&loc=%

【问题讨论】:

  • 你在哪里填充 ddl?
  • 使用断点运行并检查它在选定索引中的值是什么

标签: asp.net vb.net forms selecteditem


【解决方案1】:

为什么不使用

ddlCategory.SelectedValue

首先应该这样写:

Response.Redirect("/?cat=" & ddlCategory.SelectedItem.Value & "&loc=" & ddlLocation.SelectedItem.Value)

第二次检查你的 page_load 确保当你绑定你的 ddl 时

If Not IsPostBack Then
   ddlLocation.Bind....

【讨论】:

  • 我做了...它给出了相同的结果
【解决方案2】:

您可能会在触发事件代码之前填充 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 生命周期的引用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-31
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多