You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复‘名称“TextBox1”在当前上下文中不存在’错误?

修复“The name 'TextBox1' does not exist in the current context”错误及实现数据库插入功能

一、解决TextBox1上下文不存在的问题

  1. 核对页面指令与后台类的关联
    确保你的.aspx标记文件顶部的<%@ Page %>指令中,CodeBehind(或CodeFile)和Inherits属性与后台代码类完全匹配。例如:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Add_drugs2.aspx.cs" Inherits="Add_drugs2" %>
    

    若项目包含命名空间,Inherits需带上命名空间,如Inherits="YourProjectNamespace.Add_drugs2"。

  2. 重新生成项目
    右键你的ASP.NET项目,选择生成或重新生成。Visual Studio有时会因缓存问题未自动更新页面的.designer.cs文件,重新生成后会自动在该文件中添加TextBox1的声明:

    protected global::System.Web.UI.WebControls.TextBox TextBox1;
    
  3. 确认控件属性正确性
    检查标记文件中的TextBox控件,确保ID="TextBox1"和runat="server"属性无拼写错误,这两个属性是后台能访问控件的必要条件。

二、修复数据库插入的其他问题(原代码存在连接未打开、SQL注入风险)

原代码未打开数据库连接,且直接拼接SQL语句存在严重的SQL注入漏洞,以下是修正后的完整代码:

后台代码(Add_drugs2.aspx.cs)

using System;
using System.Data.SqlClient;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Add_drugs2 : Page
{
    private readonly string _connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\R.mdf;Integrated Security=True";

    protected void Button1_Click(object sender, EventArgs e)
    {
        // 使用using自动释放连接和命令资源
        using (SqlConnection con = new SqlConnection(_connectionString))
        {
            string sql = "INSERT INTO drugs2 (Science_name) VALUES (@ScienceName)";
            using (SqlCommand cmd = new SqlCommand(sql, con))
            {
                // 参数化查询避免SQL注入
                cmd.Parameters.AddWithValue("@ScienceName", TextBox1.Text);

                try
                {
                    con.Open();
                    cmd.ExecuteNonQuery();
                    // 可添加成功提示,比如用Label显示
                    // LabelResult.Text = "数据插入成功";
                }
                catch (Exception ex)
                {
                    // 处理异常,显示错误信息
                    // LabelResult.Text = $"插入失败:{ex.Message}";
                }
            }
        }
    }
}

标记文件(Add_drugs2.aspx)

保留原有TextBox控件,确保按钮的OnClick事件指向Button1_Click:

<asp:TextBox ID="TextBox1" runat="server" Width="152px"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="插入数据" OnClick="Button1_Click" />
<!-- 可选:添加显示结果的Label -->
<asp:Label ID="LabelResult" runat="server" ForeColor="Red"></asp:Label>

关键说明

  • using语句:自动释放数据库连接和命令对象,避免资源泄漏。
  • 参数化查询:彻底避免SQL注入攻击,同时解决特殊字符(如单引号)导致的SQL语法错误。
  • 异常处理:捕获并处理可能的数据库错误,提升程序稳定性。

内容的提问来源于stack exchange,提问作者Abohm Hmd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:42:38