public ActionResult ChangeValve(int valveID, string returnUrl) { Valve tempV = repositorie.Valves.SingleOrDefault(v => v.V_ID == valveID); VChange_VM model = new VChange_VM { Valve = tempV, Enterprises = repositorie.Enterprises, ReturnURL = returnUrl, ID = valveID, ModelName = tempV.V_model, Enterprise = tempV.V_ownerEnterprise, SerialNo = tempV.V_serNo, InvNo = tempV.V_invNo, Comment = tempV.V_comment, }; if (tempV.V_diam != null) model.Dy = tempV.V_diam.ToString(); if (tempV.V_KV != null) model.Kv = tempV.V_KV.ToString(); if (tempV.V_prodDate != null) model.ProdYear = tempV.V_prodDate.Value.Year.ToString(); return View(model); }
public ActionResult ChangeValve(VChange_VM model) { //валидация введенных пользователем данных ModelState.Clear(); //диаметр должен быть в пределах 15 - 200 либо не введен вообще int intDy = 0; try { if (model.Dy != null) { intDy = Int32.Parse(model.Dy); //если введена фигня, то не распарсит if (intDy < 15 || intDy > 200) { ModelState.AddModelError("DyError", "Введен недостоверный Дy!"); } } } catch { ModelState.AddModelError("DyError", "Введен недостоверный Дy!"); } //Kv должен быть в пределах 0,1 - 450 либо не введен вообще double doubleKv = 0; try { if (model.Kv != null) { string stringKv = model.Kv.Replace('.', ','); //для того, чтобы пользователь имел возможность вводить и через точку и через запятую doubleKv = Double.Parse(stringKv); //если введена фигня, то не распарсит if (doubleKv <= 0.1 || doubleKv > 450) { ModelState.AddModelError("KvError", "Введен недостоверный Kv!"); } } } catch { ModelState.AddModelError("DyError", "Введен недостоверный Kv!"); } //год производства должен быть в пределах 1980 - н.в. либо не введен вообще int intYear = 0; try { if (model.ProdYear != null) { intYear = Int32.Parse(model.ProdYear); //если ввели совсем уж хуйню, то не распарсит if (intYear < 1980 || intYear > DateTime.Now.Year) { ModelState.AddModelError("DateError", "Введен недостоверный год!"); } } } catch { ModelState.AddModelError("DateError", "Введен недостоверный год!"); } //проверяем длину инвентарного номера и заводского номера - должны быть меньше 30 символов if ((model.InvNo != null && model.InvNo.Length > 30) || (model.SerialNo != null && model.SerialNo.Length > 30)) { ModelState.AddModelError("DateError", "Ошибка: слишком длинный номер!"); } //проверяем длинну примечания, должна быть не менее 1000 символов if (model.Comment != null && model.Comment.Length > 1000) { ModelState.AddModelError("ExtError", "Слишком длинное примечание!"); } //конец валидации if (ModelState.IsValid) { //валидация успешна создаем и сохраняем в БД новый экземпляр Valve Valve tempV = new Valve { V_ID = model.ID, V_model = model.ModelName, V_comment = model.Comment, V_invNo = model.InvNo, V_ownerEnterprise = model.Enterprise, V_serNo = model.SerialNo }; if (model.Dy != null) tempV.V_diam = intDy; if (model.Kv != null) tempV.V_KV = doubleKv; if (model.ProdYear != null) tempV.V_prodDate = new DateTime(intYear, 1, 1); try { repositorie.SaveValve(tempV); } catch (Exception e) { //не удалось изменить ModelState.AddModelError("err", e.Message); ModelState.AddModelError("err", "Не удалось изменить КЗР!"); } } if (ModelState.IsValid) { //изенение успешно, возвращаем страницу из которой был вызов на создание нового КЗР return Redirect(model.ReturnURL); } else { //валидация неудачна model.Enterprises = repositorie.Enterprises; model.Valve = repositorie.Valves.SingleOrDefault(v => v.V_ID == model.ID); return View(model); } }