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

C# Razor Web应用:如何向DBHandler实例传递控制器变量

解决C# Razor中HomeController向DBHandler传递用户名密码的问题

1. 修改DBHandler类,添加带参数的构造函数

DBHandler无法直接访问HomeController的成员变量,需要通过构造函数传参接收用户名和密码,再拼接数据库连接字符串:

public class DBHandler
{ 
    private string conString;

    // 带参数的构造函数,接收用户名与密码
    public DBHandler(string userName, string password)
    {
        // 拼接完整数据库连接字符串
        conString = $"Conn;Database=DB;User ID={userName};Password={password};...";
    }

    // 其他数据库操作方法...
}

2. 修改HomeController,正确初始化DBHandler

注意原代码中privarte是拼写错误,需改为private;另外不能直接在字段初始化器中使用实例成员(myUserName、myPass),要在控制器构造函数中完成DBHandler的初始化:

public class HomeController : Controller
{
    public string myUserName = "Michael";
    public string myPass = "PassWord";

    private DBHandler dbhandler;

    public HomeController()
    {
        // 传递参数实例化DBHandler
        dbhandler = new DBHandler(myUserName, myPass);
    }

    // 其他控制器方法...
}

补充提示

  • 如果用户名和密码是用户登录后动态获取的(而非硬编码),可以在登录逻辑更新myUserName和myPass后,重新实例化DBHandler,或在DBHandler中添加更新连接字符串的方法。
  • 硬编码密码属于不安全实践,实际项目建议用配置文件(如appsettings.json)存储连接字符串模板,再动态替换凭据,或使用数据库连接池、身份验证服务管理登录信息。

内容的提问来源于stack exchange,提问作者Michael 7

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:10:24