Контекст
Я работаю с ASP.NET core 2.1 и страницами бритвы.Я пока не использую MVC, но я открыт, чтобы добавить его, если это необходимо.
У меня есть структура "Pages / MyPages / Login.cshtml".
На странице "... / Login.cshtml" есть модель с именем "... / Login.cshtml.cs"
Теперь у меня есть этот код ".../Login.cshtml.cs":
public class LoginModel : PageModel
{
// Set up private variables for database access and user/login managers
private readonly AppDbContext _db;
private readonly UserManager<AppUser> _userManager;
private readonly SignInManager<AppUser> _signInManager;
// Import database access and user/login managers
public LoginModel(
AppDbContext db,
UserManager<AppUser> userManager,
SignInManager<AppUser> signInManager)
{
_db = db;
_userManager = userManager;
_signInManager = signInManager;
}
...
}
Проблема
У меня есть другая страница бритвы под названием "Pages / MyPages / CreateUser.cshtml", со своей собственной моделью под названием ".../CreateUser.cshtml.cs ", то есть:
public class CreateUserModel : PageModel
{
// Set up private variables for database access and user/login managers
private readonly AppDbContext _db;
private readonly UserManager<AppUser> _userManager;
private readonly SignInManager<AppUser> _signInManager;
// Import database access and user/login managers
public CreateUserModel(
AppDbContext db,
UserManager<AppUser> userManager,
SignInManager<AppUser> signInManager)
{
_db = db;
_userManager = userManager;
_signInManager = signInManager;
}
...
}
Это тот же код, что и в Login.cshtml.cs, я хочу знать, есть ли способ написать этот код один раз и применитьэто для каждой модели, которая мне нужна.
Не работает
Я попытался создать класс MyPageModel.cs, который наследуется от Page Model, и установить конструктор с базой данных, пользователем и менеджером:
public class MyPageModel : PageModel
{
protected AppDbContext _db;
protected UserManager<AppUser> _userManager;
protected SignInManager<AppUser> _signInManager;
public MyPageModel(
AppDbContext db,
UserManager<AppUser> userManager,
SignInManager<AppUser> signInManager)
{
_db = db;
_userManager = userManager;
_signInManager = signInManager;
}
}
Затем Login.cshtml.cs и CreateUser.cs наследуются от него:
public class LoginModel : MyPageModel
{
...
}
Но выдает эту ошибку:
"Нет аргумента, чтосоответствует требуемому параметру формата 'db' из 'MyPageModel.MyPageModel (AppDbContext, UserManager, SigInManager)' "