asp.net 如何修复此错误?“名称'TextBox1'在当前上下文中不存在”

xxhby3vn  于 2023-04-13  发布在  .NET
关注(0)|答案(2)|浏览(276)
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Add_drugs2 : System.Web.UI.Page
{
     SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\R.mdf;Integrated Security=True");

     protected void Page_Load(object sender, EventArgs e)
     {
     }

     protected void Button1_Click(object sender, EventArgs e)
     {
          SqlCommand cmd = con.CreateCommand();
          cmd.CommandType = CommandType.Text;
          cmd.CommandText = "insert into drugs2 (Science_name) values('" + TextBox1.Text + "');

          cmd.ExecuteNonQuery();
     }
}

这是我的Markup文件:

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

我得到这个错误
当前上下文中不存在名称“TextBox1”
如何修复此错误?我尝试将数据添加到数据库中

vjrehmav

vjrehmav1#

好吧,这里有几个可能的问题。
首先,你不显示任何更多的标记,然后只是你的文本框。
在大多数情况下,只需将文本框放入标记即可工作,并且应该工作。
但是,也有一些例外,例如将文本框放置在重复器,甚至列表视图或网格视图中。
所以,我会为初学者创建一个空白的新网页。
然后,从工具框中拖放文本框。
所以,我们有这个:

所以你可能把页面上的标记弄得一团糟。它应该看起来和上面的相似。
现在我们的代码,像这样说:

protected void Button1_Click(object sender, EventArgs e)
{
    string sCon =
        @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\R.mdf;Integrated Security=True";

    using (SqlConnection con = new SqlConnection(sCon))
    {
        string strSQL =
            "insert into drugs2 (Science_name) values(@sname)";

        using (SqlCommand cmd = new SqlCommand(strSQL, con))
        {
            cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = TextBox1.Text;
            con.Open();
            cmd.ExecuteNonQuery();
        }
    }
}

因此,请记住,如果您的文本框“嵌套”在许多所谓的数据绑定控件(listview,gridview,repeater等)中,那么您不能直接使用控件名称(您需要共享更多的标记,然后我们可以帮助您更好地解决问题)。

py49o6xq

py49o6xq2#

请仔细考虑并尝试。您可以先获取TextBox1的文本,然后将其保存为临时字符串。一些代码如下所示:

string text = TextBox1.Text;
cmd.CommandText = "insert into drugs2 (Science_name) values('"+ text + "')";

相关问题