C# 和 ASP.NET MVC:如何检查数据库中是否存在记录和 return id
C# and ASP.NET MVC : how to check if record exist in database and return id
我正在用 C# 创建一个 ASP.NET MVC 应用程序以将用户收集到数据库中。
如果客户端已经存在于数据库中,初始页面将是一个用于搜索的表单。
如果不存在,我会重定向到一个订阅页面;如果它已经存在,我需要重定向到详细信息页面以显示信息。
我遇到的主要问题是,当我找到客户并尝试显示详细信息时,我无法在上面的示例中获取与客户关联的 ID:
在我的数据库中:
EmpID
Name
Address
Age
Salary
Worktype
0
Kevin
Boston
23
1000
Dev
我需要将 EmpID == 0
与 Name == Kevin
相匹配。
控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult IndexDetail([Bind(Include = "EmpID,Name")] EmployeeDetails employeeDetails)
{
if (ModelState.IsValid)
{
var userexist = db.EmployeeDetails.Any(x => x.Name == employeeDetails.Name);
if (userexist)
{
return RedirectToAction("Details", "Register", new { id = employeeDetails.EmpID });
}
else
{
return RedirectToAction("Create", "Register", new { id = employeeDetails.EmpID });
}
}
return View(employeeDetails);
}
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
EmployeeDetails employeeDetails = db.EmployeeDetails.Find(id);
if (employeeDetails == null)
{
return HttpNotFound();
}
return View(employeeDetails);
}
如果有人能在这件事上帮助我,我将不胜感激。
您的错误是在此处引用现有记录的 ID 时:
var userexist = db.EmployeeDetails.Any(x => x.Name == employeeDetails.Name);
if (userexist)
{
return RedirectToAction("Details", "Register", new { id = employeeDetails.EmpID });
}
else
{
return RedirectToAction("Create", "Register", new { id = employeeDetails.EmpID });
}
在这部分引用 employeeDetails.EmpID
是错误的,因为该 ID 在您的表单中不存在,或者更准确地说,它恢复为默认值。您应该获取已保存在数据库中的记录的 ID:
if (userexist)
{
var emId = db.EmployeeDetails.FirstOrDefault(x => x.Name == employeeDetails.Name).EmpID;
return RedirectToAction("Details", "Register", new { id = emID });
}
我正在用 C# 创建一个 ASP.NET MVC 应用程序以将用户收集到数据库中。
如果客户端已经存在于数据库中,初始页面将是一个用于搜索的表单。
如果不存在,我会重定向到一个订阅页面;如果它已经存在,我需要重定向到详细信息页面以显示信息。
我遇到的主要问题是,当我找到客户并尝试显示详细信息时,我无法在上面的示例中获取与客户关联的 ID:
在我的数据库中:
EmpID | Name | Address | Age | Salary | Worktype |
---|---|---|---|---|---|
0 | Kevin | Boston | 23 | 1000 | Dev |
我需要将 EmpID == 0
与 Name == Kevin
相匹配。
控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult IndexDetail([Bind(Include = "EmpID,Name")] EmployeeDetails employeeDetails)
{
if (ModelState.IsValid)
{
var userexist = db.EmployeeDetails.Any(x => x.Name == employeeDetails.Name);
if (userexist)
{
return RedirectToAction("Details", "Register", new { id = employeeDetails.EmpID });
}
else
{
return RedirectToAction("Create", "Register", new { id = employeeDetails.EmpID });
}
}
return View(employeeDetails);
}
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
EmployeeDetails employeeDetails = db.EmployeeDetails.Find(id);
if (employeeDetails == null)
{
return HttpNotFound();
}
return View(employeeDetails);
}
如果有人能在这件事上帮助我,我将不胜感激。
您的错误是在此处引用现有记录的 ID 时:
var userexist = db.EmployeeDetails.Any(x => x.Name == employeeDetails.Name);
if (userexist)
{
return RedirectToAction("Details", "Register", new { id = employeeDetails.EmpID });
}
else
{
return RedirectToAction("Create", "Register", new { id = employeeDetails.EmpID });
}
在这部分引用 employeeDetails.EmpID
是错误的,因为该 ID 在您的表单中不存在,或者更准确地说,它恢复为默认值。您应该获取已保存在数据库中的记录的 ID:
if (userexist)
{
var emId = db.EmployeeDetails.FirstOrDefault(x => x.Name == employeeDetails.Name).EmpID;
return RedirectToAction("Details", "Register", new { id = emID });
}