2017-01-24 65 views
0

這是這是創造這種模式如何將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的默認設置被設定爲它在我的應用的模型

public class Employer 
    { 
     public int ID { get; set; } 
     public string EmployerName { get; set; } 
     public virtual ApplicationUser User { get; set; } 


    } 

。如何從當前會話中獲取用戶並在創建時將其設置爲模型實例。我對asp.net框架很陌生,所以原諒我缺乏理解。非常感謝您對此的閱讀。

回答

0

假設這是ASP身份和用戶已登錄:

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

另一種選擇是存儲在會話的用戶。

+0

我不相信這是asp身份,但感謝您將這引起我的注意。我看到其他建議調用使用User.Identity.GetUserId();方法但身份似乎沒有方法.GetUserId();導致我相信我不是ASP身份。感謝您的幫助。 –

+0

看看你的項目是否有對'Microsoft.AspNet.Identity.Core'的引用。如果是這樣,GetUserId是一個擴展方法,所以添加'使用Microsoft.AspNet.Identity;'到控制器的頂部。 –

相關問題