Я только начал свой первый проект в ядре asp net и перехожу с .Net Framework.
Я создал новый проект с использованием ASP.NET Core 2.1 и добавил Identity через
Right click on project -> Add -> Add scaffolded items
к моему проекту.
Прежде всего, что-то меня смущает. Все файлы для идентификации перемещены в область, называемую «Файлы разделов идентификации и управления» и перемещены в папку «Аккаунт». Самое главное, у меня нет учетной записи и я не могу управлять контроллерами
Я создал новый пустой контроллер с именем BaseController
:
public class BaseController : Controller
{
private ApplicationDbContext _db { get; set; }
public BaseController(ApplicationDbContext db)
{
_db = db;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (HttpContext.User.Identity.IsAuthenticated)
{
string userEmail = User.Identity.Name;
ViewBag.CurrentUser = _db.Users.Where(u => u.Email.Equals(userEmail)).FirstOrDefault();
}
base.OnActionExecuting(filterContext);
}
}
В этом контроллере я получаю зарегистрированного пользователя и передаю его ViewBag и показываю его в моем представлении.
У меня есть HomeController
, который наследуется от BaseController
:
public class HomeController : BaseController
{
private UserManager<ApplicationUser> _userManager { get; set; }
private readonly ApplicationDbContext _db;
public HomeController(UserManager<ApplicationUser> userManager,
ApplicationDbContext db) : base (db)
{
_userManager = userManager;
_db = db;
}
public IActionResult Index()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
Эта часть кода работает нормально, но когда я пытаюсь перейти к Manage/Index
или Manage/ChangePassword
, я получаю эту ошибку и не знаю, как решить эту проблему. Причиной этой ошибки является то, что ViewBag пуст, поскольку действие базового контроллера никогда не выполняется.
Извините, если мой вопрос простой и не профессиональный