Я пишу проект под названием Социальная сеть. Это ASP.NET Core Web Application + шаблон веб-приложения (Model-View-Controller). Я написал возможность добавлять друзей, но она не работает.
После добавления друга я хочу отобразить страницу с его данными, но, похоже, у него нет друзей.
Но друзья будут отображаться, если вы выполните следующее (У пользователя нет друзей. Я вошел в базу данных. Друзья появились. Как?):
Модель пользователя:
public class UserModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Password { get; set; }
public string Sex { get; set; }
public List<UserModel> Friends { get; set; }
}
HomeController:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using SocialNetwork.Models;
namespace SocialNetwork.Controllers
{
[Authorize]
public class HomeController : Controller
{
SocialNetworkContext db;
public HomeController(SocialNetworkContext context)
{
db = context;
}
public IActionResult Index()
{
var user = db.Users.First(u => u.Name == HttpContext.User.Identity.Name);
return Redirect($"~/Home/UserProfile/{user.Id}");
}
public IActionResult UserProfile(int Id)
{
ViewBag.is_auth_user = IsAuthorizedUser(Id);
var user = db.Users.First(u => u.Id == Id);
return View(user);
}
public IActionResult AddFriend(int Id)
{
var user = db.Users.First(u => u.Name == HttpContext.User.Identity.Name);
var new_friend = db.Users.First(u => u.Id == Id);
if (user.Friends == null)
{
user.Friends = new List<UserModel>();
}
user.Friends.Add(new_friend);
db.Users.Update(user);
db.SaveChanges();
return Redirect($"~/Home/UserProfile/{new_friend.Id}");
}
public IActionResult Users()
{
return View(db.Users.ToList());
}
[HttpGet]
public IActionResult Edit(int Id)
{
var user = db.Users.FirstOrDefault(u => u.Id == Id);
return View(user);
}
[HttpPost]
public IActionResult Edit(UserModel user)
{
db.Users.Update(user);
db.SaveChanges();
return Redirect($"~/Home/UserProfile/{user.Id}");
}
protected bool IsAuthorizedUser(int Id)
{
var user = db.Users.First(u => u.Name == HttpContext.User.Identity.Name);
if (user.Id == Id)
{
return true;
}
else
{
return false;
}
}
}
}
Понятия не имею, как это возможно.