C# 将存储库带入AccountController

C# 将存储库带入AccountController,c#,asp.net-mvc,C#,Asp.net Mvc,我是MVC和C的新手,我被这个错误迷住了。我不知道如何纠正它。 任何帮助都将不胜感激 我试图将客户存储库引入AccountController,以便在创建用户时,可以从register user视图的下拉列表中将其与客户关联 我在控制器的这条线上得到了错误 public AccountController() : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new

我是MVC和C的新手,我被这个错误迷住了。我不知道如何纠正它。 任何帮助都将不胜感激

我试图将客户存储库引入AccountController,以便在创建用户时,可以从register user视图的下拉列表中将其与客户关联

我在控制器的这条线上得到了错误

public AccountController()
        : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
    {
    }
publiccountcontroller()
:此(新的UserManager(新的UserStore(新的ApplicationDbContext()))
{
}
错误是:帐户控制器不包含接受1个参数的构造函数 我已经试过多次更正,但还是被卡住了

    public AccountController(UserManager<ApplicationUser> userManager, ICustomerRepository customerRepository)
    {
        UserManager = userManager;
        customerrepository = customerRepository;
    }
public AccountController(UserManager UserManager,icCustomerRepository customerRepository)
{
UserManager=UserManager;
customerrepository=customerrepository;
}

谢谢

看起来您只有一个构造函数:

public AccountController
{
    UserManager<ApplicationUser> _manager ;

    public AccountController()
    {
        this._manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
    }

}

AccountController
中有2个构造函数

第一个正在呼叫第二个

第二个需要两个参数:一个
UserManager
,一个
icCustomerRepository

这是错误的,因为你只是把一件东西从第一件传递到第二件

您需要将另一个参数传递到第二个构造函数中

i、 e.猜你想做这样的事:

public AccountController()
    : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())),
           new CustomerRepository())
{
}
publiccountcontroller()
:此(新的UserManager(新的UserStore(新的ApplicationDbContext())),
新CustomerRepository())
{
}

看起来您需要在AccountController构造函数中为customerRepository参数提供一个参数

在控制器中创建属性可能是更好的解决方案,如果构造函数中未提供这些属性,则可以生成这些属性:

public AccountController
{
    UserManager<ApplicationUser> _manager ;

    public AccountController()
    {
        this._manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
    }

}
  • 从文本中获取用户管理器,然后
  • 创建CustomerRepository的新实例
以下是用户管理器的一个示例:

private ApplicationUserManager _userManager;
public ApplicationUserManager UserManager {
    get {
        return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
    }
    private set {
        _userManager = value;
    }
}
private ApplicationUserManager\u userManager;
公共应用程序管理员用户管理器{
得到{
返回_userManager??HttpContext.GetOwinContext().GetUserManager();
}
专用设备{
_userManager=value;
}
}

此方法将不允许创建抽象类或接口,ICCustomerRepository我没有说新建接口,您将新建从该接口派生的类。很抱歉。我误解了。这确实解决了我的问题。我尝试了更新存储库而不是基类。谢谢