Я могу создать пост. Также доступно добавление изображения в пост. Но когда я редактирую пост позже, изображение удаляется, и мне приходится добавлять это изображение снова при каждом редактировании. Как я могу сделать так, чтобы изображение запомнилось навсегда, и оно будет изменено только в случае, если я добавлю новое?
AdminController.cs (отвечает за редактирование)
[HttpGet]
public IActionResult EditPost(int? id)
{
if (id == null)
{
return View(new PostViewModel());
}
else
{
var post = _repo.GetPost((int)id);
return View(new PostViewModel
{
Id = post.Id,
Text = post.Text,
});
}
}
[HttpPost]
public async Task<IActionResult> EditPost(PostViewModel vm)
{
var post = new Post
{
Id = vm.Id,
Text = vm.Text,
Image = await _fileManager.SaveImage(vm.Image)
};
if (post.Id == 0)
_repo.AddPost(post);
else
_repo.UpdatePost(post);
if (await _repo.SaveChangesAsync())
return RedirectToAction("Posts");
else
return View(post);
}
Post.cs в моделях
namespace Project.Models
{
public class Post
{
public int Id { get; set; }
public string Text { get; set; } = "";
public string Image { get; set; } = "";
}
}
Repository.cs
public void UpdatePost(Post post)
{
_ctx.Post.Update(post);
}
IRepository.cs
void UpdatePost(Post post);
На всякий случай я публикую sh PostController.cs
public IActionResult Index()
{
var posts = _repo.GetAllPosts();
return View(posts);
}
public IActionResult Post(int id)
{
var post= _repo.GetPost(id);
return View(post);
}
[HttpGet("/Image/{image}")]
public IActionResult Image(string image)
{
var path = image.Substring(image.LastIndexOf('.') + 1);
return new FileStreamResult(_fileManager.ImageStream(image), $"image/{path}");
}