获取用户 Asp .net MVC C#



我正在尝试通过其 Id 获取应用程序用户,但它总是返回 null。我需要它在编辑视图中查看其详细信息,但由于它是空的,所以我的编辑视图的所有字段均为空。

这是我的控制器:

public ActionResult Edit(string id) {
ApplicationDbContext db = new ApplicationDbContext();
ApplicationUser user = db.Users.Find(id);
return View(user);
}
[HttpPost]
public ActionResult Edit(ApplicationUser user) {
if (ModelState.IsValid) {
ApplicationDbContext db = new ApplicationDbContext();
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
return View(user);
}

问题是"db.Users.Find(id);" 返回 null。取而代之的是,如果我执行以下代码,一切正常:

public ActionResult Edit(string id) {
ApplicationDbContext db = new ApplicationDbContext();
ApplicationUser user = new ApplicationUser();
user.Email = "test@gmail.com";
//(...)
return View(user);
}

你能告诉我这可能有什么问题吗?

提前感谢任何帮助。

更新:感谢您的所有评论。正如你们中的一些人指出的那样,原因实际上非常简单 - 我正在寻找数据库中不存在的 id。但是我不知道它是怎么发生的。当我在表上显示我的 ID 时(检查下面的代码),这些 ID 与我在 SQL 对象资源管理器上的表上看到的 ID 不同。怎么会这样呢?所有其他信息(姓名和电子邮件)都是正确的。

@model IEnumerable<FMS.Models.ApplicationUser>
<table class="table table-striped table-hover ">
<thead>
<tr>
<th>Name</th>
<th>E-mail</th>
<th>ID</th>
</tr>
</thead>
<tbody>
@foreach (var user in Model) {
<tr>
<td>@user.Name</td>
<td>@user.Email</td>
<td>@user.Id</td>
<td class="pull-right">
@Html.ActionLink("Edit", "Edit", new { id = user.Id})
</td>
</tr>
}
</tbody>
</table>

更新2:我刚刚注意到每次刷新视图时,ID列上的id都不同!这是什么原因造成的?

你可以这样写:

public ActionResult Edit(string id) {
ApplicationDbContext db = new ApplicationDbContext();
ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == id);
return View(user);
}

您可以使用以下内容找到用户:

db.Users.FirstOrDefault(u => u.Id.Equals(id))

如果它返回null也许您没有这样的用户

最新更新