ASP.NET MVC AspNet.Identity - 如何将登录的用户 ID 保存到创建的记录中?



我正在构建一个只有登录用户才能访问的 CRUD,并且我正在尝试向 crud 记录添加额外的信息(用户 ID(。 如何获取 userId 并将其与记录一起保存?

这是我的控制器

public ActionResult Create()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "CompanyName,Telephone")]Company company)
{
try
{
if (ModelState.IsValid)
{
db.Companies.Add(company);
db.SaveChanges();
return RedirectToAction("Index");
}
}
catch (DataException /* dex */)
{
ModelState.AddModelError("", "Unable to save changes.");
}
return View(company);
}

这是我的模型

namespace ProjectX.Models
{
public class Company
{
//public int Id { get; set; }
public int CompanyID { get; set; }
public string CompanyName { get; set; }
public string Telephone { get; set; }
}
}

感谢您的帮助!

您可以根据您在代码中的位置以不同的方式访问它,但由于您在控制器中,您应该有一个像这样的扩展方法User.Identity.GetUserId();在这种情况下,它将是字符串,但您可以解析它,但请确保您的表AspNetUsers将 id 作为数据类型int。假设这是真的,你可以说:

[HttpPost, Authorize]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "CompanyName,Telephone")]Company company)
{
try
{
if (ModelState.IsValid)
{
company.Id = int.Parse(User.Identity.GetUserId());
db.Companies.Add(company);
db.SaveChanges();
return RedirectToAction("Index");
}
}
catch (DataException /* dex */)
{
ModelState.AddModelError("", "Unable to save changes.");
}
return View(company);
}

不要忘记应用[Authorize]属性。

如果要将用户的更多数据保存到Company则需要从数据库中获取用户,然后从中提取所需的用户数据,然后将其保存在公司对象中,如下所示:

var user = UserManager.FindById(int.Parse(User.Identity.GetUserId()));
company.Username = user.Username;
//and so on...

在这里,您可以获得更多详细信息:

相关内容

  • 没有找到相关文章

最新更新