public IActionResult Create() { EditNewsViewModel model = new EditNewsViewModel(); model.Categories = _categoryService.GetCategories(); return(View(model)); }
public IActionResult Create() { if (session.GetString("user") == null) { return(RedirectToAction("PageNotFound", "Error")); } //Images var model = new EditNewsViewModel(); model.Images = context.Images.Include(x => x.News).Where(x => x.News == null).ToList(); model.News = new News() { Written = DateTime.Now, Author = context.Users.SingleOrDefault(x => x.UserName.Equals(session.GetString("user")))?.FullName, Body = "", Title = "" }; var categories = context.Categories.Where(x => !x.Name.Equals("Alle")).ToList(); var newsCategories = context.HasCategories.Include(x => x.News).Include(x => x.Category)? .Where(y => y.News.Id == 0 && !y.Category.Name.Equals("Alle"))? .Select(y => y.Category); model.AllCategories = categories.ToList(); model.Categories = new string[] { }; model.UploadImagesViewModel = new UploadImagesViewModel(); return(View(model)); }
public EditNewsPage() { InitializeComponent(); _editVM = new EditNewsViewModel(); BindingContext = _editVM; }
public async Task <IActionResult> UpdateNews([FromRoute] int id, [FromBody] EditNewsViewModel model) { var result = default(ApiResult); try { var news = await context.News.FindAsync(id); if (news == null) { result = ApiResult.CreateResult(ApiStatus.NotFound, "News not found"); } else { context.Entry <News>(news).CurrentValues.SetValues(model); var save = await context.SaveChangesAsync(); result = ApiResult.CreateResult(ApiStatus.Ok, "Edited successfully"); } } catch (Exception ex) { result = ApiResult.CreateResult(ApiStatus.ApplicationError, ex.Message); return(this.GetActionResult(result)); } return(this.GetActionResult(result)); }
public void EditNews(EditNewsViewModel inputModel, string newsId) { this.CheckInputParameter(newsId); var news = this.db.News.FirstOrDefault(n => n.Id == newsId); news.Content = inputModel.Content; news.Title = inputModel.Title; this.db.News.Update(news); this.db.SaveChanges(); }
public async Task <IActionResult> EditNews(Guid newsId, string imageToDeleteName = null) { // Если есть изображение, которое надо удалить, заходим в тело условия if (imageToDeleteName != null) { // Создаем экземпляр класса картинки и присваиваем ему данные из БД NewsImage newsImage = await _websiteDB.NewsImages.FirstOrDefaultAsync(i => i.ImageName == imageToDeleteName); // Делаем еще одну проверку. Лучше перебдеть. Если все ок, заходим в тело условия и удаляем изображения if (newsImage != null) { // Исходные (полноразмерные) изображения FileInfo imageNormal = new FileInfo(_appEnvironment.WebRootPath + newsImage.ImagePathNormal); if (imageNormal.Exists) { imageNormal.Delete(); } // И их уменьшенные копии FileInfo imageScaled = new FileInfo(_appEnvironment.WebRootPath + newsImage.ImagePathScaled); if (imageScaled.Exists) { imageScaled.Delete(); } // Удаляем информацию об изображениях из БД и сохраняем _websiteDB.NewsImages.Remove(newsImage); await _websiteDB.SaveChangesAsync(); } } // Создаем экземпляр класса News и присваиваем ему значения из БД News news = await _websiteDB.News.FirstAsync(n => n.Id == newsId); // Создаем список изображений из БД, закрепленных за выбранной новостью List <NewsImage> images = await _websiteDB.NewsImages.Where(i => i.NewsId == newsId).OrderByDescending(i => i.ImageDate).ToListAsync(); // Создаем модель для передачи в представление и присваиваем значения EditNewsViewModel model = new EditNewsViewModel() { NewsTitle = news.NewsTitle, NewsBody = news.NewsBody, NewsImages = images, // Скрытые поля NewsId = newsId, NewsDate = news.NewsDate, UserName = news.UserName, ImagesCount = images.Count }; ViewBag.Title = $"Редактирование новости \"{news.NewsTitle}\""; // Передаем модель в представление return(View(model)); }
public IActionResult Edit(int id) { Article article = _newsService.GetArticle(id); EditNewsViewModel model = new EditNewsViewModel(); model.Categories = _categoryService.GetCategories(); model.Title = article.Title; model.Author = article.Author; model.Category = article.Category; model.Text = article.Text; return(View(model)); }
public ActionResult EditNews(EditNewsViewModel news) { if (!ModelState.IsValid) { return(View(news)); } if (NewsService.Update(news.ToEntity())) { return(RedirectToAction("Index", "News")); } return(View()); }
public IActionResult Edit(EditNewsViewModel news) { if (ModelState.IsValid) { if (_newsRepository.EditPost(news)) { return(RedirectToAction("Index", "Home")); } } return(View(news)); }
public IActionResult OverviewImageUrl(EditNewsViewModel model) { var target = context.News.AsNoTracking().SingleOrDefault(x => x.Id == model.News.Id); target.ImageUrl = model.News.ImageUrl; context.News.Update(target); context.SaveChanges(); return(RedirectToAction("Edit", "Admin", new { id = target.Id })); }
//======================== EDIT public IActionResult Edit(int id) { var post = _newsRepository.GetPost(id); EditNewsViewModel news = new EditNewsViewModel() { id = post.id, FileName = post.FileName, Title = post.Title }; return(View(news)); }
public IActionResult Edit(EditNewsViewModel editNewsViewModel) { if (ModelState.IsValid) { News news = _mapper.Map <News>(editNewsViewModel); _newsService.UpdateNews(news); return(RedirectToAction("Index", new { id = news.Id })); } editNewsViewModel.Categories = new SelectList(_newsService.GetCategories(), "Id", "Title"); return(View(editNewsViewModel)); }
public async Task <IActionResult> Edit(EditNewsViewModel input) { if (!this.ModelState.IsValid) { return(this.View(input)); } var user = await this.UserManager.GetUserAsync(this.User); var result = await this.NewsService.EditAsync(input, user); return(this.RedirectToAction("GetNews")); }
public IActionResult Edit(int id) { if (session.GetString("user") == null) { return(RedirectToAction("PageNotFound", "Error")); } if (id < 1) { return(RedirectToAction("PageNotFound", "Error")); } var model = new EditNewsViewModel(); if (ModelState.IsValid) { var targetNews = context.News.SingleOrDefault(x => x.Id == id); if (targetNews == null) { return(RedirectToAction("PageNotFound", "Error")); } var imageData = context.Images.Include(x => x.News); //Images List <Image> images = new List <Image>(); model.News = new News() { Id = targetNews.Id, Written = targetNews.Written, Author = targetNews.Author, Body = targetNews.Body, Title = targetNews.Title, ImageUrl = targetNews.ImageUrl }; images = imageData.Where(x => x.News.Id == targetNews.Id).ToList(); var categories = context.Categories.Where(x => !x.Name.Equals("Alle")).ToList(); var newsCategories = context.HasCategories.Include(x => x.News).Include(x => x.Category)? .Where(y => y.News.Id == id && !y.Category.Name.Equals("Alle"))? .Select(y => y.Category); categories.ToList().ForEach(x => model.AllCategories.Add(x)); model.Categories = newsCategories.Select(x => x.Id.ToString()).ToArray(); model.Images = images; model.UploadImagesViewModel = new UploadImagesViewModel(); } return(View(model)); }
public IActionResult Edit(int id) { News news = _newsService.GetNewsById(id); if (news == null) { return(NotFound()); } EditNewsViewModel editNewsViewModel = _mapper.Map <EditNewsViewModel>(news); editNewsViewModel.Categories = new SelectList(_newsService.GetCategories(), "Id", "Title"); return(View(editNewsViewModel)); }
public IActionResult EditNews(EditNewsViewModel model) { if (session.GetString("user") == null) { return(RedirectToAction("PageNotFound", "Error")); } var news = model.News; var categories = model.Categories; var oldCategories = context.HasCategories.Include(x => x.News).Include(x => x.Category) .Where(y => y.News.Id == news.Id && !y.Category.Name.Equals("Alle")) .Select(y => y.Category).ToList(); //Update New context.News.Update(model.News); context.SaveChanges(); //Remove all categories from news foreach (var cat in oldCategories) { context.HasCategories.Remove(new HasCategory() { CategoryId = cat.Id, NewsId = model.News.Id }); } //Add all new categories for news var newCategories = new List <Category>(); foreach (var cat in categories) { newCategories.Add(context.Categories.FirstOrDefault(x => x.Id.Equals(int.Parse(cat)))); } foreach (var cat in newCategories) { context.HasCategories.Add(new HasCategory() { CategoryId = cat.Id, NewsId = model.News.Id }); } context.SaveChanges(); return(RedirectToAction("Index", "Admin")); }
public ActionResult Edit(EditNewsViewModel news) { if (ModelState.IsValid) { var oldNews = db.News.Find(news.NewsId); oldNews.Title = news.Title; oldNews.Content = news.Content; oldNews.IsFeatured = news.IsFeatured; oldNews.Preview = string.Format("{0}...", news.Content.ToString().Substring(0, 1)); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(news)); }
public ActionResult SaveNews(EditNewsViewModel model) { if (ModelState.IsValid) { var response = GetCommand <SaveNewsCommand>().ExecuteCommand(model); if (response != null) { if (model.Id.HasDefaultValue()) { Messages.AddSuccess("Created successfully!"); } return(WireJson(true, response)); } } return(WireJson(false)); }
public IActionResult CreateNews(EditNewsViewModel model) { if (session.GetString("user") == null) { return(RedirectToAction("PageNotFound", "Error")); } var news = model.News; var categories = model.Categories ?? new string[] { }; //Update New context.News.Add(model.News); context.SaveChanges(); //Add all new categories for news var newCategories = new List <Category>(); foreach (var cat in categories) { newCategories.Add(context.Categories.FirstOrDefault(x => x.Id.Equals(int.Parse(cat)))); } foreach (var cat in newCategories) { context.HasCategories.Add(new HasCategory() { CategoryId = cat.Id, NewsId = model.News.Id }); } context.SaveChanges(); var newImages = context.Images.Where(x => x.News == null); foreach (var img in newImages) { img.News = context.News.Last(); context.Images.Update(img); } context.SaveChanges(); return(RedirectToAction("Index", "Admin")); }
public async Task <IDeletableEntityRepository <News> > EditAsync(EditNewsViewModel input, ApplicationUser user) { var uploadResult = await this.Cloudinary.UploadAsync(input.Image); var news = AutoMapperConfig.MapperInstance.Map <News>(input); news.ImageUrl = uploadResult; news.User = user; news.UserId = user.Id; this.NewsRepository.Update(news); await this.NewsRepository.SaveChangesAsync(); await this.UsersRepository.SaveChangesAsync(); return(this.NewsRepository); }
public async Task <IActionResult> EditAsync(EditNewsViewModel editNewsViewModel) { if (!ModelState.IsValid) { return(View(editNewsViewModel)); } News otherNewsDbWithSameTitle = this.newsService.GetAll(x => x.Id != editNewsViewModel.Id && x.Title == editNewsViewModel.Title).FirstOrDefault(); if (otherNewsDbWithSameTitle != null) { string titleName = nameof(editNewsViewModel.Title); this.ModelState.AddModelError(titleName, string.Format("A news with this {0} already exists!", titleName)); return(View(editNewsViewModel)); } News newsDb = this.newsService.GetAll(x => x.Id == editNewsViewModel.Id).FirstOrDefault(); if (newsDb == null) { this.AddValidationErrorsToModelState(new List <string> { "A news with this id doesn't exist" }); return(View("ValidationErrorsWithoutSpecificModel")); } newsDb.Title = editNewsViewModel.Title; newsDb.Content = editNewsViewModel.Content; this.newsService.Save(newsDb); bool isSaved = await this.unitOfWork.CommitAsync(); if (!isSaved) { TempData["ErrorMessage"] = "Ooops, something went wrong"; return(View(editNewsViewModel)); } TempData["SuccessMessage"] = "News edited successfully!"; return(RedirectToListAllActionInCurrentController()); }
public IActionResult Edit(string id) { News newsDb = this.newsService.GetAll(x => x.Id == id).FirstOrDefault(); if (newsDb == null) { this.AddValidationErrorsToModelState(new List <string> { "A news with this id doesn't exist" }); return(View("ValidationErrorsWithoutSpecificModel")); } EditNewsViewModel editNewsViewModel = new EditNewsViewModel { Id = newsDb.Id, Title = newsDb.Title, Content = newsDb.Content }; return(View(editNewsViewModel)); }
//================================ EDIT POST public bool EditPost(EditNewsViewModel news) { var post = _context.News.FirstOrDefault(x => x.id == news.id); if (news.FormFile != null) { var nameOfImage = Path.GetFileNameWithoutExtension(news.FormFile.FileName); var extensionOfImage = Path.GetExtension(news.FormFile.FileName); var guid = Guid.NewGuid(); var newFileName = nameOfImage + guid + extensionOfImage; var rootPath = Path.Combine(_webHost.WebRootPath, "images", "PostsGallery", newFileName); using (var fileStream = new FileStream(rootPath, FileMode.Create)) { news.FormFile.CopyTo(fileStream); } news.FileName = newFileName; var previousFileName = post.FileName; var deleteImage = Path.Combine(_webHost.WebRootPath, "images", "PostsGallery", previousFileName); File.Delete(deleteImage); } post.FileName = news.FileName; post.Title = news.Title; var result = _context.SaveChanges(); if (result > 0) { return(true); } return(false); }
public IActionResult Edit(EditNewsViewModel inputModel, string newsId) { if (!this.ModelState.IsValid || string.IsNullOrEmpty(newsId)) { var errorModel = this.newsService.GetErrorViewModel(Constants.InvalidNewsInputModelMessage); return(this.View(DeleteErrorView, errorModel)); } try { this.newsService.EditNews(inputModel, newsId); return(this.RedirectToAction(Constants.ReadNewsView, Constants.NewsController, new { area = string.Empty, newsId })); } catch (ArgumentException) { var errorModel = this.newsService.GetErrorViewModel(Constants.InvalidNewsInputModelMessage); return(this.View(DeleteErrorView, errorModel)); } }
public IActionResult ImageUpload(EditNewsViewModel model) { if (session.GetString("user") == null) { return(RedirectToAction("PageNotFound", "Error")); } var image = model.UploadImagesViewModel.File; var targetNews = context.News.SingleOrDefault(x => x.Id == model.News.Id); if (ModelState.IsValid) { string uniqueFileName = null; if (image != null) { string uploadsFolder = Path.Combine(hostingEnvironment.WebRootPath, @"assets\images\news"); uniqueFileName = Guid.NewGuid().ToString() + "_" + image.FileName; string filePath = Path.Combine(uploadsFolder, uniqueFileName); image.CopyTo(new FileStream(filePath, FileMode.Create)); context.Images.Add(new Image() { ImageDescription = model.UploadImagesViewModel.Description, ImageUrl = "/assets/images/news/" + uniqueFileName, News = targetNews }); context.SaveChanges(); } } if (targetNews == null) { return(RedirectToAction("Create", "Admin")); } else { return(RedirectToAction("Edit", "Admin", new { id = targetNews.Id })); } }
public void EditNewsWorksCorrectly() { var service = this.GetNewsService(); var inputModel = this.GetNewsCreateInputModel(); var news = service.CreateNews(inputModel, NewsAuthorId); Assert.True(news.Title == NewsTitle); Assert.True(news.Content == NewsContent); var editModel = new EditNewsViewModel { Id = news.Id, Content = "Changed Content", Title = "Changed Title" }; service.EditNews(editModel, editModel.Id); Assert.True(news.Title == editModel.Title); Assert.True(news.Content == editModel.Content); }
public IActionResult Edit(EditNewsViewModel model) { this.newsService.Update(model.Id, model.Title, model.SecondTitle, model.Content, model.CategoryId, model.ImageUrl, model.Approved); return(this.RedirectToAction("Index", "Dashboard")); }
public async Task <IActionResult> EditNews(EditNewsViewModel model, IFormFileCollection uploads) { // Проверяем, чтобы размер файлов не превышал заданный объем foreach (var file in uploads) { if (file.Length > 2097152) { ModelState.AddModelError("NewsImage", $"Файл \"{file.FileName}\" превышает установленный лимит 2MB."); break; } } // Если все в порядке, заходим в тело условия if (ModelState.IsValid) { // Создаем экземпляр класса News и присваиваем ему значения News news = new News() { NewsTitle = model.NewsTitle, NewsBody = model.NewsBody, // Скрытые поля Id = model.NewsId, NewsDate = model.NewsDate, UserName = model.UserName }; // Далее начинаем обработку загружаемых изображений List <NewsImage> newsImages = new List <NewsImage>(); foreach (var uploadedImage in uploads) { // Если размер входного файла больше 0, заходим в тело условия if (uploadedImage.Length > 0) { // Создаем новый объект класса FileInfo из полученного изображения для дальнейшей обработки FileInfo imgFile = new FileInfo(uploadedImage.FileName); // Приводим расширение к нижнему регистру (если оно было в верхнем) string imgExtension = imgFile.Extension.ToLower(); // Генерируем новое имя для файла string newFileName = Guid.NewGuid() + imgExtension; // Пути сохранения файла string pathNormal = "/files/images/normal/" + newFileName; // изображение исходного размера string pathScaled = "/files/images/scaled/" + newFileName; // уменьшенное изображение // В операторе try/catch делаем уменьшенную копию изображения. // Если входным файлом окажется не изображение, нас перекинет в блок CATCH и выведет сообщение об ошибке try { // Создаем объект класса SixLabors.ImageSharp.Image и грузим в него полученное изображение using (Image image = Image.Load(uploadedImage.OpenReadStream())) { // Создаем уменьшенную копию и обрезаем её var clone = image.Clone(x => x.Resize(new ResizeOptions { Mode = ResizeMode.Crop, Size = new Size(300, 200) })); // Сохраняем уменьшенную копию await clone.SaveAsync(_appEnvironment.WebRootPath + pathScaled, new JpegEncoder { Quality = 50 }); // Сохраняем исходное изображение await image.SaveAsync(_appEnvironment.WebRootPath + pathNormal); } } // Если вдруг что-то пошло не так (например, на вход подало не картинку), то выводим сообщение об ошибке catch { // Создаем сообщение об ошибке для вывода пользователю ModelState.AddModelError("NewsImage", $"Файл {uploadedImage.FileName} имеет неверный формат."); // Удаляем только что созданные файлы (если ошибка возникла не на первом файле) foreach (var image in newsImages) { // Исходные (полноразмерные) изображения FileInfo imageNormal = new FileInfo(_appEnvironment.WebRootPath + image.ImagePathNormal); if (imageNormal.Exists) { imageNormal.Delete(); } // И их уменьшенные копии FileInfo imageScaled = new FileInfo(_appEnvironment.WebRootPath + image.ImagePathScaled); if (imageScaled.Exists) { imageScaled.Delete(); } } // Возвращаем модель с сообщением об ошибке в представление return(View(model)); } // Создаем объект класса NewsImage со всеми параметрами NewsImage newsImage = new NewsImage() { Id = Guid.NewGuid(), ImageName = newFileName, ImagePathNormal = pathNormal, ImagePathScaled = pathScaled, NewsId = news.Id, ImageDate = DateTime.Now }; // Добавляем объект newsImage в список newsImages newsImages.Add(newsImage); } } // Если в процессе выполнения не возникло ошибок, сохраняем всё в БД if (newsImages != null && newsImages.Count > 0) { await cmsDB.NewsImages.AddRangeAsync(newsImages); } cmsDB.News.Update(news); await cmsDB.SaveChangesAsync(); // Редирект на главную страницу return(RedirectToAction("Index", "News")); } // В случае, если при редактировании пытаться загрузить картинку выше разрешенного лимита, то перестают отображаться уже имеющиеся изображения // При перегонке модели из гет в пост, теряется список с изображениями. Причина пока не ясна, поэтому сделал такой костыль // Счетчик соответственно тоже обнулялся, поэтому его тоже приходится переназначать заново List <NewsImage> images = await cmsDB.NewsImages.Where(i => i.NewsId == model.NewsId).OrderByDescending(i => i.ImageDate).ToListAsync(); model.NewsImages = images; model.ImagesCount = images.Count; // Возврат модели в представление в случае, если запорится валидация return(View(model)); }
public async Task <IActionResult> EditNews(EditNewsViewModel model, IFormFileCollection uploads) { SettingsNews settings = await _websiteDB.SettingsNews.FirstAsync(); int imageSize = 1048576 * settings.MaxImageSize; // Ищем запись в БД по Id News news = await _websiteDB.News.FirstOrDefaultAsync(n => n.Id == model.NewsId); // Если запись существует, продолжаем обработку if (news != null) { // Проверяем, чтобы общее количество изображений не превышало установленный лимит if (uploads.Count > 3 - model.NewsImagesCount) { ModelState.AddModelError("NewsImage", $"Превышен лимит изображений для одной записи: 3"); } else { // Проверяем, чтобы размер файлов не превышал заданный объем foreach (var file in uploads) { if (file.Length > imageSize) { ModelState.AddModelError("NewsImage", $"Файл \"{file.FileName}\" превышает установленный лимит {settings.MaxImageSize}MB."); break; } } } // Если все в порядке, заходим в тело условия if (ModelState.IsValid) { //News news = await _websiteDB.News.FirstAsync(n => n.Id == model.NewsId); // Обновляем данные news.NewsTitle = model.NewsTitle; news.NewsBody = model.NewsBody.SpecSymbolsToView(); // Далее начинаем обработку загружаемых изображений List <NewsImage> newsImages = new List <NewsImage>(); foreach (var uploadedImage in uploads) { // Если размер входного файла больше 0, заходим в тело условия if (uploadedImage.Length > 0) { // Создаем новый объект класса FileInfo из полученного изображения для дальнейшей обработки FileInfo imgFile = new FileInfo(uploadedImage.FileName); // Приводим расширение к нижнему регистру (если оно было в верхнем) string imgExtension = imgFile.Extension.ToLower(); // Генерируем новое имя для файла string newFileName = Guid.NewGuid() + imgExtension; // Пути сохранения файла string originalDirectory = "/uploadedfiles/news/images/original/"; string scaledDirectory = "/uploadedfiles/news/images/scaled/"; string pathOriginal = originalDirectory + newFileName; // изображение исходного размера string pathScaled = scaledDirectory + newFileName; // уменьшенное изображение // Если такие директории не созданы, то создаем их if (!Directory.Exists(_appEnvironment.WebRootPath + originalDirectory)) { Directory.CreateDirectory(_appEnvironment.WebRootPath + originalDirectory); } if (!Directory.Exists(_appEnvironment.WebRootPath + scaledDirectory)) { Directory.CreateDirectory(_appEnvironment.WebRootPath + scaledDirectory); } // В операторе try/catch делаем уменьшенную копию изображения. // Если входным файлом окажется не изображение, нас перекинет в блок CATCH и выведет сообщение об ошибке try { // Создаем объект класса SixLabors.ImageSharp.Image и грузим в него полученное изображение using (Image image = Image.Load(uploadedImage.OpenReadStream())) { // Создаем уменьшенную копию и обрезаем её var clone = image.Clone(x => x.Resize(new ResizeOptions { Mode = ResizeMode.Crop, Size = new Size(300, 169) })); // Сохраняем уменьшенную копию await clone.SaveAsync(_appEnvironment.WebRootPath + pathScaled, new JpegEncoder { Quality = settings.ImageResizeQuality }); // Сохраняем исходное изображение await image.SaveAsync(_appEnvironment.WebRootPath + pathOriginal); } } // Если вдруг что-то пошло не так (например, на вход подало не картинку), то выводим сообщение об ошибке catch { // Создаем сообщение об ошибке для вывода пользователю ModelState.AddModelError("NewsImage", $"Ошибка при обработке файла {uploadedImage.FileName}. Обратитесь к администратору сайта."); // Удаляем только что созданные файлы (если ошибка возникла не на первом файле) foreach (var image in newsImages) { // Исходные (полноразмерные) изображения FileInfo imageOriginal = new FileInfo(_appEnvironment.WebRootPath + image.ImagePathOriginal); if (imageOriginal.Exists) { imageOriginal.Delete(); } // И их уменьшенные копии FileInfo imageScaled = new FileInfo(_appEnvironment.WebRootPath + image.ImagePathScaled); if (imageScaled.Exists) { imageScaled.Delete(); } } // Возвращаем модель с сообщением об ошибке в представление return(View(model)); } // Создаем объект класса NewsImage со всеми параметрами NewsImage newsImage = new NewsImage() { Id = Guid.NewGuid(), ImageName = newFileName, ImagePathOriginal = pathOriginal, ImagePathScaled = pathScaled, NewsId = news.Id, ImageDate = DateTime.Now }; // Добавляем объект newsImage в список newsImages newsImages.Add(newsImage); } } // Если в процессе выполнения не возникло ошибок, сохраняем всё в БД if (newsImages != null && newsImages.Count > 0) { await _websiteDB.NewsImages.AddRangeAsync(newsImages); } _websiteDB.News.Update(news); await _websiteDB.SaveChangesAsync(); // Редирект на главную страницу return(RedirectToAction("Index", "News")); } // В случае, если при редактировании пытаться загрузить картинку выше разрешенного лимита, то перестают отображаться уже имеющиеся изображения // При перегонке модели из гет в пост, теряется список с изображениями. Причина пока не ясна, поэтому сделал такой костыль // Счетчик соответственно тоже обнулялся, поэтому его тоже приходится переназначать заново List <NewsImage> images = await _websiteDB.NewsImages.Where(i => i.NewsId == model.NewsId).OrderByDescending(i => i.ImageDate).ToListAsync(); model.NewsImages = images; model.NewsImagesCount = images.Count; // Возврат модели в представление в случае, если запорится валидация return(View(model)); } else { return(Redirect("/Main/PageNotFound")); } }
public IActionResult Edit(EditNewsViewModel model) { var newsId = this.newsService.Update(model.Id, model.Title, model.SecondTitle, model.Content, model.CategoryId, model.ImageUrl, model.Approved); return(this.RedirectToAction(nameof(this.ById), new { id = newsId })); }