public ActionResult CChange(int C_ID, string ReturnURL) { HSA.Domain.BD.Controller tempC = repositorie.Controllers.SingleOrDefault(c => c.C_ID == C_ID); CChange_VM model = new CChange_VM { ID = tempC.C_ID, Enterprise = tempC.C_OwnerEnterprise, serNo = tempC.C_serNo, modelNo = tempC.C_modelNo, invNo = tempC.C_invNo, comment = tempC.C_comment, returnURL = ReturnURL, Enterprises = repositorie.Enterprises, models = repositorie.C_models, controller = tempC }; //необходимо отдельно обработать дату производства с проверкой на null if (tempC.C_prodDate != null) { model.prodYear = ((DateTime)tempC.C_prodDate).Year.ToString(); } return View(model); }
public ActionResult CChange(CChange_VM model) { //валидация //проверяем введенный год ModelState.Clear(); int intYear = 0; try { if (model.prodYear != null) //если null, то значит пользователь ничего не ввел в поле (допустимо) { intYear = Int32.Parse(model.prodYear); //если ввели совсем уж хуйню, то не распарсит if (intYear != 0 && !(intYear > 1980 && intYear <= DateTime.Now.Year)) //год должен быть в интервале 1980 - текущий год, если год = 0 то пользователь его не указал просто { ModelState.AddModelError("DateError", "Введен недействительный год!"); } } } catch { //нераспарсил ModelState.AddModelError("DateError", "Введен недействительный год!"); } //проверяем длину инвентарного номера и заводского номера - должны быть меньше 30 символов if ((model.invNo != null&&model.invNo.Length > 30) || (model.serNo!=null&&model.serNo.Length > 30)) { ModelState.AddModelError("DateError", "Ошибка: слишком длинный номер!"); } //проверяем длину комментария (<1000 символов) if (model.comment != null && model.comment.Length > 1000) { ModelState.AddModelError("tooBigcom", "Слишком длинное примечание!"); } //конец валидации if (ModelState.IsValid) { //валидация успешна: пробуем сохранить в БД HSA.Domain.BD.Controller tempC = new Domain.BD.Controller { C_ID = model.ID, C_modelNo = model.modelNo, C_serNo = model.serNo, C_invNo = model.invNo, C_comment = model.comment, C_OwnerEnterprise = model.Enterprise, }; if (model.prodYear != null) tempC.C_prodDate = new DateTime(intYear, 1, 1); try { repositorie.SaveController(tempC); } catch (Exception e) { ModelState.AddModelError("err", e.Message); } } if (ModelState.IsValid) { //сохранение успешно return Redirect(model.returnURL); } else { //сохранение не успешно: вывод ошибок model.controller = repositorie.Controllers.SingleOrDefault(c => c.C_ID == model.ID); model.models = repositorie.C_models; model.Enterprises = repositorie.Enterprises; return View(model); } }