Textbox.text始终在c#后面的代码中返回空字符串

时间:2017-05-19 18:26:04

标签: c# asp.net .net

好吧,我正在尝试做一个简单的命令:从TextBox中获取文本。我已经搜索过了,但每个答案都没有找到我。

在我的代码aspx中:

<form id="form1" runat="server" method="post">
    <div class="form">

        <div class="form-search ngen-search-form">

            <span id="search-trigger" class="form-search-submit">
                <img src="Imagens/Lupa_Icon 2.png" id="lupa"/>
            </span>

            <asp:TextBox ID="txtBoxSearch" runat="server" CssClass="form-search-input" placeholder="Pesquise..." ViewStateMode="Enabled"/>

        </div>

    </div>
</form>

我有一个Javascript函数,用于验证客户端按下了哪个键:

$(document).keypress(function(e) {
        if(e.which == 13){

            if( document.getElementById("txtBoxSearch").value == "" ) return true;

            else {

                <% setSearch(); %>

                document.getElementById("testeArv").innerHTML='<%=search.ToString()%>';

                return false;

            }

        }// First if

});

最后,代码背后的函数 setSearch()是:

public void setSearch( )
{
    if( !Page.IsPostBack ) {

        search = txtBoxSearch.Text;

    }
}

3 个答案:

答案 0 :(得分:2)

主要错误是关于如何在jQuery中调用codebehind方法。看看here 知道怎么做。摘要:您需要 ajax

然后你必须记住Page.IsPostBack

使用!Page.IsPostBack您说的是“首页访问权限”,但是当您按下按钮!Page.IsPostBack时将会出现错误。如果您尝试相同的示例:

public void setSearch( )
{
    if(!Page.IsPostBack) {
        // First page access
        search = txtBoxSearch.Text;
    } else {
        // The page has been reloaded
        search = txtBoxSearch.Text;
      }
}

它会起作用。 (else将运行)

我不确定但是我已经尝试过(没有jQuery)按钮并且发生了同样的错误。您希望在按下Enter键时运行该功能,以便页面执行重新加载。看看here

也许它会以某种方式帮助你。

答案 1 :(得分:0)

这是<form>标签,阻碍了您获取回发值。删除<form>标记,并在文本框中使用AutoPostBack=true。您将不需要使用jQuery来捕获事件和值。

答案 2 :(得分:-2)

您无法从客户端代码调用代码背后的代码。它们在不同的机器上执行。