0

我正在使用 JQuery 使用我的数据库自动完成搜索文本框。当我想访问查询字符串中的搜索文本框的文本时,问题就出现了,因为我使用的是 html 文本框。为了在上下文中使用,我要么必须使用,要么runat="server"可以使用asp:Textbox,但在这两种情况下,我的自动完成功能都会停止工作。

这是aspx代码:

<div id="search-location-wrapper">
            <input type="text" id="txtSearch" class="autosuggest" />
            <div id="search-submit-container">
            <asp:Button ID="btnSearch" runat="server" Text="Search" 
                      onclick="btnSearch_Click"></asp:Button>
            </div>
</div>

C#代码:

protected void btnSearch_Click(object sender, EventArgs e)
    {
        string location = txtSearch.ToString();  /*Here is the error: txtSearch is not in current context */
        int id = Convert.ToInt32(ddlCategory.SelectedValue);
        string url = "SearchResults.aspx?Id="+id+"&location="+location;
        Response.Redirect(url);
    }
4

2 回答 2

1

您可以asp:Textbox在不停止 jquery 的情况下使用:

ASP: <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

jQuery 选择器: $("#TextBox1")

如果您有母版页网格视图,您可以通过在浏览器中使用Inspect Element 来获取您的元素客户端 ID 。

ASP:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

</asp:Content>

jQuery 选择器: $("#ContentPlaceHolder1_TextBox1")

于 2013-07-26T17:53:35.127 回答
1

你的问题很可能只是当你把runat="server"它放在上面时 ASP.NET 正在改变你的文本框的 ID。你的 jQuery 可能有类似的东西:

$("#txtSearch")

相反,将其添加runat="server"到您的文本框中,然后将其更改为:

$("#<%= txtSearch.ClientID %>")

当页面呈现时,它将为文本框输入正确的 ID。

于 2013-07-26T17:57:30.597 回答