Я создал собственный контроллер BaseController и заставляю все мои контроллеры наследовать от него.
Этот контроллер полезен для изменения цвета заголовка, добавления пользовательских текстов, логотипов и т. Д., И мне бы очень хотелось, чтобы мой контроллер Manage и Account тоже наследовал его, чтобы мое веб-приложение имело одинаковый «стиль» на каждой странице .
Проблема в том, что контроллеры Account и Manage не могут наследоваться от BaseController, поскольку у них уже есть два конструктора, один пустой и один с параметрами ApplicationUserManager и ApplicationSignInManager.
Если я пытаюсь наследовать от BaseController, это дает мне ошибки в этих двух конструкторах, говоря, что у них нет необходимых формальных параметров, которые я должен передать из BaseController.
Не указан аргумент, соответствующий необходимому формальному параметру (1stParam) BaseController.BaseController (Type1stParam, Type2ndParam, Type3rdParam, Type4thParam)
Я некоторое время искал в 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)
}
Спасибо всем, кто готов мне помочь, и мне жаль, если я допустил некоторые ошибки в формулировке.