获取用户Asp .net MVC C#

时间:2017-07-05 10:34:05

标签: c# asp.net asp.net-mvc

我正在尝试通过其Id获取应用程序用户,但它始终返回null。我需要它在编辑视图中查看其详细信息,但因为它为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 Object Explorer上的表上看到的不同。怎么会发生这种情况?其他所有信息(姓名和电子邮件)都是正确的。

@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都不同!可能导致这种情况的原因是什么?

2 个答案:

答案 0 :(得分:0)

您可以写下以下方式:

[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ avsbe-web-ca ---
[INFO] Deleting /root/.jenkins/workspace/CA-16_PORTAL_BE-NG-WEB/16-PORTAL_BE/avsbe-web-ca/target
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ avsbe-web-ca ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 4 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.0:compile (default-compile) @ avsbe-web-ca ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 40 source files to /root/.jenkins/workspace/CA-16_PORTAL_BE-NG-WEB/16-PORTAL_BE/avsbe-web-ca/target/classes
Build step 'Invoke top-level Maven targets' marked build as failure
Finished: FAILURE

答案 1 :(得分:-2)

您可以找到用户:

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

如果它返回null,你可能没有这样的用户