public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { var valueProvider = bindingContext.ValueProvider; var model = new UavEditModel(); try { model.Uav = new UavDTO() { Type = new UavTypeDTO() { Id = int.Parse((string)valueProvider.GetValue("UavType").ConvertTo(typeof(string))) }, Id = (int)valueProvider.GetValue("Uav.Id").ConvertTo(typeof(int)), FlightRadius = (int)valueProvider.GetValue("Uav.FlightRadius").ConvertTo(typeof(int)), Endurance = (string)valueProvider.GetValue("Uav.Endurance").ConvertTo(typeof(string)), MaxSpeed = (int)valueProvider.GetValue("Uav.MaxSpeed").ConvertTo(typeof(int)), MinSpeed = (int)valueProvider.GetValue("Uav.MinSpeed").ConvertTo(typeof(int)), TakeoffWeight = (int)valueProvider.GetValue("Uav.TakeoffWeight").ConvertTo(typeof(int)), Length = (int)valueProvider.GetValue("Uav.Length").ConvertTo(typeof(int)), TakeoffProcedure = (string)valueProvider.GetValue("Uav.TakeoffProcedure").ConvertTo(typeof(string)), LandingProcedure = (string)valueProvider.GetValue("Uav.LandingProcedure").ConvertTo(typeof(string)), ServiceCeiling = (int)valueProvider.GetValue("Uav.ServiceCeiling").ConvertTo(typeof(int)), Wingspan = (int)valueProvider.GetValue("Uav.Wingspan").ConvertTo(typeof(int)), PowerUnit = (string)valueProvider.GetValue("Uav.PowerUnit").ConvertTo(typeof(string)) }; model.Payloads = GetPayloads((string[])valueProvider.GetValue("Payloads").ConvertTo(typeof(string[])), new List<PayloadDTO>()); model.GcuTypes = GetGcuType((string[])valueProvider.GetValue("GcuType").ConvertTo(typeof(string[])), new List<GcuTypeDTO>()); return model; } catch (Exception ex) { model.BindingError = ex; return model; } }
public ActionResult EditUav(UavEditModel model) { if (!ModelState.IsValid || model.BindingError != null) { TempData["error"] = "Ошибка связывателя: " + model.BindingError.Message; return RedirectToAction("index", "admin"); } if (_db.SaveUav(model)) TempData["success"] = "Изменения в элементе были сохранены"; else TempData["error"] = "Ошибка метода соханения"; return RedirectToAction("index", "admin"); }
public bool SaveUav(UavEditModel model) { if (model.Uav == null || model.Payloads == null || model.GcuTypes == null) return false; var uav = (model.Uav.Id != 0) ? _db.Uavs.Get(model.Uav.Id) : new Uav(); uav.Endurance = model.Uav.Endurance; uav.FlightRadius = model.Uav.FlightRadius; uav.LandingProcedure = model.Uav.LandingProcedure; uav.Length = model.Uav.Length; uav.MaxSpeed = model.Uav.MaxSpeed; uav.MinSpeed = model.Uav.MinSpeed; uav.PowerUnit = model.Uav.PowerUnit; uav.ServiceCeiling = model.Uav.ServiceCeiling; uav.TakeoffProcedure = model.Uav.TakeoffProcedure; uav.Wingspan = model.Uav.Wingspan; uav.TakeoffWeight = model.Uav.TakeoffWeight; uav.Payloads?.Clear(); uav.GcuTypes?.Clear(); if (uav.GcuTypes == null) uav.GcuTypes = new List<GcuType>(); if (uav.Payloads == null) uav.Payloads = new List<Payload>(); foreach (var item in model.Payloads) uav.Payloads.Add(_db.Payloads.GetAll.First(x => x.Id == item.Id)); foreach (var item in model.GcuTypes) uav.GcuTypes.Add(_db.Gcus.GetAll.First(x => x.Id == item.Id)); uav.Type = _db.UavTypes.GetAll.First(x => x.Id == model.Uav.Type.Id); if (model.Uav.Id == 0) return _db.Uavs.Add(uav) && _db.Save(); return _db.Save(); }