【问题标题】:Redirecting from ASP.NET Dropdown从 ASP.NET 下拉菜单重定向
【发布时间】:2008-12-30 19:19:49
【问题描述】:

处理您有一个用于链接到另一个 URL 的 ASP.Net 下拉列表的情况的最佳方法是什么

为清晰起见进行了编辑

这是基本场景:

绑定了 5 个城市的下拉列表

选择其中一个城市应将我发送到基于城市的 URL

现在我正在使用“OnSelectedIndexChanged”事件回发,然后处理该事件并重定向到相应的页面。

但是,这会导致每个选定城市对服务器进行 2 次点击,1 次用于处理回发和重定向,然后另一次用于呈现实际页面。

使用自定义 javascript 构建 URL 是我的最佳选择吗?

【问题讨论】:

  • 您能描述一个场景以便我们更好地提供帮助吗?

标签: c# asp.net javascript drop-down-menu


【解决方案1】:

您可以为选择更改事件添加客户端处理程序,然后根据所选值重定向到所需的页面:

<asp:DropDownList ID="ddl" runat="server"
  onchange="document.location.href = this.value;" >
    <asp:ListItem Text="a" Value="http://url1"></asp:ListItem>
    <asp:ListItem Text="b" Value="http://url2"></asp:ListItem>
    <asp:ListItem Text="c" Value="http://url3"></asp:ListItem>
    <asp:ListItem Text="d" Value="http://url4"></asp:ListItem>
</asp:DropDownList>

【讨论】:

  • 很酷,您不必在任何地方求助于 !
  • 非常好,我从来没有意识到“这个”会在那种情况下工作。我会把它写成“document.getElementById('ddl')...”
  • 如果你提到你正在调用脚本的对象......总是使用“this”关键字:)
  • 小备注:“javascript:”部分不是必需的,甚至被许多人认为是无用的,特别是如果您已经在像“onchange”这样的 JS 事件处理程序中。
【解决方案2】:

将 autopostback 设置为 false,并将其添加到 onchange 客户端事件(假设该值具有整个 URL,如果没有,则酌情编辑):

window.navigate(this.options[this.selectedIndex].value);

【讨论】:

    【解决方案3】:

    我只是想知道,为什么不通过 AJAX 获取城市信息(www.asp.net/learn 上有几个视频教程)并向用户显示城市信息而不是创建其他更多页面跳转?

    这只是一个想法,一个 Web 2.0 的想法 :)

    【讨论】:

      【解决方案4】:

      如果页面很重并且您担心渲染时间,您可以使用 ajax 来渲染查询结果。服务器命中来处理发布数据和重定向应该是最小的,不值得在客户端这样做。就个人而言,我会更专注于第一次显示用户想要的数据。

      【讨论】:

        【解决方案5】:

        通常,我会同意,但每个页面都需要有一个具体的 URL + 在点击 URL 时重新生成页面的其他部分。

        感谢您的建议!

        【讨论】:

          猜你喜欢
          • 2013-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-19
          • 2012-12-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多