首页 > 解决方案 > 如何使用 DbContext 类中存在的 DbSet<> 属性作为 Controller 类中存在的 Action-method 的参数?

问题描述

我正在制作登录和注册 Web 应用程序。在 [HttpPost] 登录方法(存在于 UserController 类中)中,我想将“DbSet Users”属性作为参数传递,但出现错误。这是包含 DbSet 属性的 DbContext 类的屏幕截图 这是控制器类中存在的操作方法的屏幕截图

         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");
            }
        }
    }

标签: asp.net-mvcentity-frameworkentity-framework-coreasp.net-core-mvc

解决方案


我找到了它的解决方案。我们可以简单地创建一个包含用户名和密码属性(登录时需要)的 ViewModel 类,并且我们可以简单地使用这个 ViewModel 类作为 Login Action 方法中的参数。


推荐阅读