示例#1
0
        public async Task <IActionResult> Edit(FilmEditViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction(nameof(Edit), new { id = model.Id }));
            }
            var item = await films.GetAsync(model.Id);

            if (item == null)
            {
                return(NotFound());
            }

            if (model.Producer != item.Producer?.Name)
            {
                item.ProducerId = producers.LoadOrCreate(model.Producer);
            }

            if (model.Poster != null)
            {
                int newPosterId = await posters.AddAsync(model.Poster);

                if (newPosterId > 0 && item.PosterId != null)
                {
                    await posters.DeleteAsync((int)item.PosterId);
                }
                item.PosterId = newPosterId;
            }

            item.Name        = model.Name;
            item.Description = model.Description;
            item.Producer    = null;
            item.Year        = model.Year;
            await films.SaveAsync(item);

            return(RedirectToAction(nameof(Edit), new { id = item.Id }));
        }