public async Task <IActionResult> Edit(int?id, string name) { using var db = AppContextFactory.DB; OntologyEditViewModel model = new OntologyEditViewModel(); await TryUpdateModelAsync <OntologyEditViewModel>(model, "", i => i.FacetId, i => i.ElementName); if (db.FacetItems.Any(i => i.FacetId == model.FacetId && i.Name == model.ElementName)) { ModelState.AddModelError("Error", "Такой элемент уже есть!"); } if (!ModelState.IsValid) { return(View(new OntologyEditViewModel() { ElementName = model.ElementName, Facets = (from f in db.Facets select new SelectListItem() { Text = f.Name, Value = f.Id.ToString(), Selected = model.FacetId == f.Id }).ToList() })); } using var t = db.Database.BeginTransaction(); try { FacetItem fi = new FacetItem(); if (id.HasValue) { fi = db.FacetItems.FirstOrDefault(i => i.Id == id.Value) ?? new FacetItem(); } fi.FacetId = model.FacetId; fi.Name = model.ElementName; if (fi.Id == 0) { db.Entry(fi).State = Microsoft.EntityFrameworkCore.EntityState.Added; } await db.SaveChangesAsync(); await t.CommitAsync(); } catch (Exception ex) { await t.RollbackAsync(); ModelState.AddModelError("Error", "В процессе сохранения произошла ошибка! Ошибка: " + ex.Message); } return(RedirectToAction("Index")); }
public IActionResult Edit(int?id) { using var db = AppContextFactory.DB; OntologyEditViewModel model = new OntologyEditViewModel() { Facets = new List <SelectListItem>() }; model.Facets.Add(new SelectListItem() { Selected = true, Text = "[ Выберите класс ]" }); model.Facets.AddRange(from f in db.Facets where new string[] { "skills", "subjects" }.Contains(f.Code) select new SelectListItem() { Text = f.Name, Value = f.Id.ToString() }); FacetItem fi = new FacetItem(); if (id.HasValue) { fi = db.FacetItems.FirstOrDefault(i => i.Id == id) ?? new FacetItem(); } if (fi.Id != 0) { model.Facets.FirstOrDefault(i => i.Value == fi.FacetId.ToString()).Selected = true; model.FacetId = fi.FacetId; model.ElementName = fi.Name; } return(View(model)); }