C#中的变量无法从html文本框中获取值

Posted

技术标签:

【中文标题】C#中的变量无法从html文本框中获取值【英文标题】:VARIABLE IN C# cant get the value from html text box 【发布时间】:2021-09-02 03:02:36 【问题描述】:

我正在尝试在我的数据库中搜索订单,但我无法访问输入文本框中的文本 我已经尝试了一些我在这里和其他网站上看到的东西,并且变量无论如何都无法获得值

Asp.net

 <div class="input-container">
     <input type="text" id="txtSearch" runat="server" class="input-field" style="color: black;" placeholder="Pesquisar.."/>
     <button id="btnsearch" class="wrapper" OnServerClick="btnsearch_Click" runat="server"><i class="fas fa-search" style="color:#8b9095;" ></i></button>
 </div>

CS

protected void btnsearch_Click(object sender, EventArgs e)
        
            con.Open();
            var txtSearch = FindControl("txtSearch") as TextBox;
            SqlCommand cmd = new SqlCommand("select DISTINCT No_ from [encomenda] where No_= @No_", con);

            cmd.Parameters.AddWithValue("@No_", txtSearch);


            SqlDataReader sdr = cmd.ExecuteReader();
            if (sdr.Read())
            
                SqlDataAdapter sda = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                sda.Fill(dt);
                GridView1.DataSource = dt;
                GridView1.DataBind();

            
            con.Close();
        

【问题讨论】:

直接用asp文本框试试? @VivekMishra 我不能因为我在 div 上使用的 css 类 无论如何都没有工作:/ 【参考方案1】:

看到严重的错误...

首先,txtSearch 不是TextBox,而是html input control。所以这一行返回 null。

var txtSearch = FindControl("txtSearch") as TextBox;

正确的方法是

var txtSearchInput = FindControl("txtSearch") as HtmlInputText;

然后使用txtSearchInput.Value

或者你可以简单地使用txtSearch.Value作为

protected void btnsearch_Click(object sender, EventArgs e)

    con.Open();
    SqlCommand cmd = new SqlCommand("select DISTINCT No_ from [encomenda] where No_= @No_", con);

    cmd.Parameters.AddWithValue("@No_", txtSearch.Value);


    SqlDataReader sdr = cmd.ExecuteReader();
    if (sdr.Read())
    
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        sda.Fill(dt);
        GridView1.DataSource = dt;
        GridView1.DataBind();

    
    con.Close();

【讨论】:

以上是关于C#中的变量无法从html文本框中获取值的主要内容,如果未能解决你的问题,请参考以下文章

无法从文本框中获取更新的值

如何从文本框中获取值并将其分配给 Xcode 中的整数变量?

c# 将从单个文本框中获取的多个值分配给标签

C#如何从表单中的文本框中获取文本,从不同的类调用

如何使用 C# 从文本框中的访问数据库中获取数据

从下拉框中获取文本