这是我的应用程序特定模型
public class Employer
{
public int ID { get; set; }
public string EmployerName { get; set; }
public virtual ApplicationUser User { get; set; }
}
这是asp.net创建此模型的默认设置
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("ID,EmployerName")] Employer employer)
{
if (ModelState.IsValid)
{
//was hoping solution would be as easy as..
//employer.User = HttpContext.User;
//but that is not working neither is anything else I find
_context.Add(employer);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(employer);
}
创建雇主模型时,没有为其设置ApplicationUser。如何从当前会话中获取用户并在创建时将其设置为模型实例。我是asp.net框架的新手,请原谅我缺乏理解。非常感谢您阅读本文。
答案 0 :(得分:0)
假设这是ASP Identity并且用户已登录:
if (ModelState.IsValid)
{
string currentUserId = User.Identity.GetUserId();
employer.User = _context.Users.FirstOrDefault(u => u.Id == currentUserId);
_context.Add(employer);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
另一种选择是将用户存储在会话中。