asp.net-mvc - 如何使用 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");
}
}
}
解决方案
我找到了它的解决方案。我们可以简单地创建一个包含用户名和密码属性(登录时需要)的 ViewModel 类,并且我们可以简单地使用这个 ViewModel 类作为 Login Action 方法中的参数。
推荐阅读
- google-bigquery - BigQuery 脚本:循环遍历表的记录
- kerberos - Kerberos TGT 起源于哪里?AS还是TGS?
- python - 如何获取 Spark DataFrame 中每行列表中最大值的索引?[PySpark]
- .net-core-3.0 - 如何在 Mvc Core3 中通过 UserManager 获取具有一个角色的所有用户?
- jquery - 如何动态更新 Dropzone URL
- sql - 如何将 SQL PIVOT 用于多个聚合?
- kubernetes - IBM Cloud Function - 连接到 Kubernetes 容器
- xml - 需要借助 XPath Extractor 从 Jmeter 中的 XML 响应中提取值
- python - 使用子进程的 Python 文件转换
- javascript - How can I trigger onwheel event up and down effect in javascript?