【问题标题】:Textbox.text always returns empty string in code behind c#Textbox.text 总是在 C# 后面的代码中返回空字符串
【发布时间】:2017-05-19 18:26:04
【问题描述】:

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

    }
}

【问题讨论】:

  • string search = txtBoxSearch.Text;
  • 我声明了 search 一个实例变量。
  • setSearch 不会在你的 else 运行时运行,而是在从 aspx 生成 html 时在服务器上运行。

标签: c# asp.net .net


【解决方案1】:

主要错误是关于如何在 jQuery 中调用代码隐藏方法。看看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

也许它在某种程度上对你有帮助。

【讨论】:

    【解决方案2】:

    &lt;form&gt; 标签阻止了您在回传中获取值。删除&lt;form> 标记并为您的文本框使用AutoPostBack=true。您不需要使用 jQuery 来捕获事件和值。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 你为什么不赞成这个答案。没错。
      • 是的,你可以在西雅图使用 AJAX @Paul
      • 当然您可以使用 Ajax @ricopo 但这不是原始帖子所做的,因此您的声明毫无意义。另一个误导性的评论。叹息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 2019-07-25
      • 2022-09-27
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多