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



好吧,我正在尝试执行一个简单的命令:从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;
    }
}

主要错误是关于如何在jQuery中调用代码隐藏方法。看看这里知道该怎么做。总结:你需要 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 时运行该功能,以便页面将重新加载。看看这里。

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

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

不能从客户端代码调用代码隐藏代码。它们在不同的机器上执行。

最新更新