我有一個繼承默認身份類的專案和用戶模型。
這兩個共享多對多關系。
public class Project
{
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public ICollection<AppUser> users { get; set; }
}
public class AppUser : IdentityUser
{
public string DisplayName { get; set; }
public ICollection<Project> projects { get; set; }
}
在我的專案控制器中,我顯示了屬于當前用戶的所有專案;(我用用戶 id 檢查用戶)
[Authorize]
public IActionResult Index()
{
var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier);
IEnumerable<Project> objProjectList = _unitOfWork.Project.Where(userId);
return View(objProjectList);
}
在 post 方法上,我試圖將當前用戶添加到新創建的專案物件中,以建立這兩者之間的關系,即(該用戶是該專案的成員)我使用依賴注入來注入使用我的用戶管理器自定義用戶類(Appuser,繼承默認的腳手架標識)
[HttpPost]
[ValidateAntiForgeryToken]
[Authorize]
public async Task<IActionResult> CreateAsync(Project obj)
{
if (ModelState.IsValid)
{
AppUser user = await _userManager.GetUserAsync(User);
obj.users.Add(user);
_unitOfWork.Project.Add(obj);
_unitOfWork.Project.Save();
return RedirectToAction("Index");
}
else
{
return View(obj);
}
}
但是我收到以下錯誤;
System.NullReferenceException:“物件參考未設定為物件的實體。”
我到底做錯了什么?我應該以其他方式添加用戶嗎?
我很感激任何意見,謝謝。
uj5u.com熱心網友回復:
在您的模型設計中:
public ICollection<AppUser> users { get; set; }
ICollection是一個介面,你不能用它直接添加一些東西,否則你會得到NullReferenceException. 您可以創建一個實體,然后使用它來添加您想要的內容。
AppUser user = await _userManager.GetUserAsync(User);
//create an instance.
List<AppUser> users = new List<AppUser>();
users.Add(user);
obj.users = users;
_unitOfWork.Project.Add(obj);
_unitOfWork.Project.Save();
return RedirectToAction("Index");
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/461405.html
上一篇:外鍵物件參考的模型驗證問題
