我已经创建了一个自定义控制器BaseController,并且我要使所有控制器都继承自该控制器。
此控制器对于更改标题颜色,添加自定义文本,徽标等很有用,我真的很想使我的“管理和帐户”控制器也继承自它,以使我的Web应用程序在每个页面中都具有相同的“样式”
问题在于Account和Manage控制器无法从BaseController继承,因为它们已经有两个构造函数,一个为空,另一个具有参数ApplicationUserManager和ApplicationSignInManager。
如果我尝试从BaseController继承,则会给我这两个构造函数一个错误,表明它们没有应从BaseController传递的必需形式参数。
没有给出与BaseController.BaseController(Type1stParam,Type2ndParam,Type3rdParam,Type4thParam)所需的形式参数(1stParam)相对应的参数
我已经在StackOverflow上搜索了一段时间以找到答案,但是找不到很多,所以我决定创建这个问题。
这是自定义控制器。
public abstract class BaseController : Controller
{
readonly Servix2Repo.IUtente Utente;
readonly Servix2Repo.IMenu Menu;
readonly Servix2Repo.IAzienda Azienda;
readonly ServixMVCModel _context;
public BaseController(ServixMVCModel context, Servix2Repo.IUtente utenteRepo, Servix2Repo.IMenu menuRepo, Servix2Repo.IAzienda aziendaRepo)
{
_context = context;
this.Utente = utenteRepo;
this.Menu = menuRepo;
this.Azienda = aziendaRepo;
}
(Other methods)
}
这是我遇到问题的两个控制器之一。我在空的构造函数和最后一个构造函数上遇到了错误。
public class AccountController : BaseController
{
private ApplicationSignInManager _signInManager;
private ApplicationUserManager _userManager;
public AccountController(ServixMVCModel context, Servix2Repo.IUtente utenteRepo, Servix2Repo.IMenu menuRepo, Servix2Repo.IAzienda aziendaRepo) : base(context, utenteRepo, menuRepo, aziendaRepo)
{
}
public AccountController()
{
}
public AccountController(ApplicationUserManager userManager, ApplicationSignInManager signInManager )
{
UserManager = userManager;
SignInManager = signInManager;
}
(Other methods)
}
感谢任何愿意帮助我的人,如果我在措辞上有误,我深感抱歉。
答案 0 :(得分:0)
使用Thangadurai在comments中的建议进行了修复:
在BaseController中,您没有任何不接受任何参数的默认构造函数。因此,在所有AccountController构造函数中,您都应以与第一个构造函数相同的方式调用基本构造函数,或者必须在基类
中包含一个默认构造函数