如何将ASP.net的默认应用程序用户附加到特定于应用程序的模型?

时间:2017-01-24 15:57:05

标签: c# asp.net entity-framework asp.net-identity

这是我的应用程序特定模型

  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框架的新手,请原谅我缺乏理解。非常感谢您阅读本文。

1 个答案:

答案 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");
}

另一种选择是将用户存储在会话中。