#asp.net #asp.net-mvc
Вопрос:
Я занимаюсь социальным обслуживанием в asp.net mvc. Я хочу сделать кнопку «нравится». Мне пришла в голову идея составить список людей, которым понравился пост в PostModel, поэтому я добавил эту строку в model.
public virtual ICollection<ApplicationUser> WhoLiked { get; set; }
Возможно, важно, чтобы конструктор миграции не был пустым, но я не мог видеть никаких изменений в базе данных после этой миграции.
Затем я сделал этот метод в контроллере.
[HttpPost]
public async Task<IActionResult> Like(int id)
{
ApplicationUser model = new ApplicationUser();
model = await _userManager.FindByEmailAsync(User.Identity.Name);
var post = await _db.Posts.FindAsync(id);
if (post.WhoLiked.Contains(model))
{
post.Likes -= 1;
post.WhoLiked.Remove(model);
}
else
{
post.Likes = 1;
post.WhoLiked.Add(model);
}
await _db.SaveChangesAsync();
return RedirectToAction("Dashboard");
}
Я получаю ошибку «ссылка на объект не установлена для экземпляра объекта».
Комментарии:
1. На какой линии вы получили эту ошибку?
2. если (пост. Целиком. Содержит(модель))
3. Теперь поставьте на нем точку останова и выясните , равно ли
post
,WhoLiked
илиmodel
равно нулю.4.
WhoLiked
равно нулю5. Теперь пришло время выяснить, почему
WhoLiked
равно нулю. Проверьте свою базу данных, существует ли соответствующая таблица, проверьте свои миграции и т. Д…