Как использовать свойство DbSet <>, присутствующее в классе DbContext, в качестве параметра для метода действия, присутствующего в классе контроллера? - PullRequest
1 голос
/ 06 мая 2020

Я создаю веб-приложение для входа и регистрации. В методе входа [HttpPost] (присутствует в классе UserController) я хочу передать свойство «DbSet Users» в качестве параметра, но получаю сообщение об ошибке. Это снимок экрана класса DbContext, который содержит свойство DbSet Это снимок экрана метода действия, присутствующего в классе контроллера

         public class UsersController : Controller
    {
        private  readonly DataContext db;
        public UsersController(DataContext db)
        {
            this.db = db;
        }
        public IActionResult Index()
        {
            return View(db.Users.ToList());
        }
        public IActionResult Register()
        {
            return View();
        }
        [HttpPost]
        public IActionResult Register(User usr)
        {
            if (ModelState.IsValid)
            {
                db.Users.Add(usr);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            else
            {
                ModelState.AddModelError("", "Some Error Occured!");
            }
            return View(usr);
        }
        public IActionResult Login()
        {
            return View();
        }
        [HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult Login(Users users )
        {
            if (ModelState.IsValid)
            {
                    var obj = db.users.Where(u => u.Username == (users.Username) && u.Password == (users.Password)).FirstOrDefault();
                    if (obj != null)
                    {
                        TempData["UserId"] = obj.UserId.ToString();
                        TempData["Username"] = obj.Username.ToString();
                        return RedirectToAction("LoggedIn");
                    }
            }
            return View(users);
        }
        public IActionResult LoggedIn()
        {
            if (TempData["UserId"] != null)
            {
                return View();
            }
            else
            {
                return RedirectToAction("Login");
            }
        }
    }

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Я нашел свое решение. Мы можем просто создать класс ViewModel, который будет содержать свойства имени пользователя и пароля (который требуется во время входа в систему), и просто мы можем использовать этот класс ViewModel в качестве параметра в методе действия входа в систему.

0 голосов
/ 06 мая 2020

Используйте теги кода (экраны очень раздражают), потому что их намного легче читать, и вы можете, например, скопировать и вставить из них. Вы должны получить экземпляр DataContext в свой контроллер. Разве в ASP. NET нет внедрения зависимости? Если это так, просто введите свой DataContext как услугу. Ваш код в том виде, в каком вы его вставили, не может работать - класс Users (вы используете Users в качестве имени класса) не существует в вашей области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...