public ActionResult NewController(NewController_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", "Введен недостоверный год!"); } //проверяем, что пользователь выбрал модель if (Model.modelNo == 0) { ModelState.AddModelError("CModelError", "Выберите модель контроллера!"); } //проверяем длину инвентарного номера и заводского номера - должны быть меньше 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_modelNo = Model.modelNo, C_serNo = Model.serNo, C_invNo = Model.invNo, C_comment = Model.comment, C_OwnerEnterprise = Model.enterprise, }; //год надо обрабатывать отдельно с проверкой на null if (Model.prodYear != null) tempC.C_prodDate = new DateTime(intYear, 1, 1); int tempCID=0; try { tempCID = repositorie.SaveController(tempC); } catch (Exception e) { //сохранить не удалось ModelState.AddModelError("err", e.Message); } //привязываем контроллер к системе, если в модели присутствует номер системы if (Model.aSystemNo != null && ModelState.IsValid) { ASystem tempS = repositorie.Asystems.SingleOrDefault(aS => aS.AS_ID == Model.aSystemNo); tempS.AS_Controller = tempCID; try { repositorie.SaveASystem(tempS); } catch (Exception e) { ModelState.AddModelError("err", e.Message); } } } if (ModelState.IsValid) { //возвращаем страницу из которой был вызов на создание нового контроллера return Redirect(Model.returnURL); } else { //сохранение неудачно Model.models = repositorie.C_models; Model.enterprises = repositorie.Enterprises; if (Model.aSystemNo!=null) Model.aSystem = repositorie.Asystems.SingleOrDefault(aS => aS.AS_ID == Model.aSystemNo); return View(Model); } }
public ActionResult NewController(string returnURL, System.Nullable<int> asystemNo = null) { //создаем модель NewController_VM model = new NewController_VM { enterprise = uRepositorie.Users.SingleOrDefault(u => u.Name == System.Web.HttpContext.Current.User.Identity.Name).Enterprise, returnURL = returnURL, models = repositorie.C_models, enterprises = repositorie.Enterprises, aSystemNo = asystemNo, aSystem = asystemNo==null?null:repositorie.Asystems.SingleOrDefault(aS => aS.AS_ID==asystemNo) }; return View(model); }