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 == 0Name == 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 });
}