c# - 如何使 Account 和 Manage 控制器从 BaseController 继承而不会出现错误
问题描述
我已经制作了一个名为 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)
}
感谢任何愿意帮助我的人,如果我犯了一些措辞错误,我很抱歉。
解决方案
修复了在评论中使用Thangadurai的建议:
在您的 BaseController 中,您没有任何不接受任何参数的默认构造函数。因此,在所有 AccountController 构造函数中,您应该以与第一个构造函数相同的方式调用基构造函数,或者您必须在基类中包含一个默认构造函数
推荐阅读
- android - Renderscript 致命信号 11 (SIGSEGV) 代码 1 (SEGV_MAPERR) 故障地址
- django - 如何在Django中使用左侧的复选框制作带有检查项目列表的表单?
- latex - LaTeX 和 TikZ 中的装饰性页面边框
- android - 点击按钮时在firebase中实时搜索值
- python - python3中urllib.request.urlopen()的凌乱输出
- python - 将 Flask-SocketIO 与 Node socket.io-client 或 ngx-socket-io 连接时出现问题
- c# - 如何让 dotnet 显示更短的堆栈跟踪?
- android - 如何从两个扬声器播放?
- selenium - 无法在 selenoid 中看到 http://myselenoid-host.example.com:4444/video/ 下的任何录制视频
- java - Maven 构建:从环境变量设置 settings.xml 路径