如何将选定的下拉列表值附加到aspx页面本身的超链接查询字符串中

时间:2012-03-26 14:38:07

标签: javascript asp.net .net

我有一个下拉列表。我想将它的选定值添加到超链接查询字符串。如何使用< %%>从aspx文件本身执行此操作块?我的代码就像这样

<asp:DropDownList ID="ddlLanguage" runat="server" DataSourceID="ds" DataTextField="Langcode" DataValueField="LangKey" Width="200px"> </asp:DropDownList>

<% if (ddlLanguage.Items.Count>0) { %>
  <asp:HyperLink ID="hlnk" NavigateUrl="abcd.aspx?lkey=1" runat="server" />
<% } %>

如何将选定的下拉列表值传递给hlnk的NavigateUrl。

请不要回答使用aspx.cs文件。我希望它只在同一条线上完成。

2 个答案:

答案 0 :(得分:1)

要动态更新NavigateUrl而不修改.cs文件,您可以为下拉列表编写客户端OnChange事件,只更新输出的href属性{ {1}}通过预先选定的值进行控制。

这可以使用jQuery轻松实现。这里有一些示例代码可以帮助您入门。

hlnk

或者,为了提高性能,您可以使用看起来像超链接的超链接重新定位到正确的URL,但使用JavaScript进行操作。这意味着网址只会更改一次,而不是每次更改。

$('.language-dropdown').change(function()
{
    var newUrl = 'http://www.example.com/?id=' + $(this).val();
    $('.hyperlink').attr('href', newUrl)
});

答案 1 :(得分:1)

您遇到的问题是操作发生在客户端,因此您需要在使用javascript进行下拉更改时调整链接的值(我在这里使用了jQuery)。

您可以实现基于jquery的函数来监视dd以进行更改,然后设置链接的URL。

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>

<body>
...
    <asp:DropDownList ID="ddlLanguage" runat="server" DataSourceID="ds" DataTextField="Langcode" DataValueField="LangKey" Width="200px"> </asp:DropDownList>

    <% if (ddlLanguage.Items.Count>0) { %>
     <a href="abcd.aspx?lkey=1" id="hlnk>Link to other location</a>
    <% } %>

    <script>
      var ddId = '<%=this.ddlLanguage.ClientID %>' 
       $('#'+ddId).change(function () {
           $('#hlnk').attr('href', 'abcd.aspx?lkey='+$(this).val());
       });
    </script>

...
</body>