示例#1
0
        public async Task <ActionResult> CreateAsync(MenuItem menuItem)
        {
            if (menuItem == null)
            {
                throw new ArgumentNullException(nameof(menuItem));
            }
            if (ModelState.IsValid)
            {
                menuItem.TrackingState = TrackingState.Added;
                foreach (var item in menuItem.SubMenus)
                {
                    item.ParentId      = menuItem.Id;
                    item.TrackingState = TrackingState.Added;
                }
                menuItemService.ApplyChanges(menuItem);
                try
                {
                    var result = await unitOfWork.SaveChangesAsync();

                    return(Json(new { success = true, result = result }, JsonRequestBehavior.AllowGet));
                }
                catch (System.Data.Entity.Validation.DbEntityValidationException e)
                {
                    var errormessage = string.Join(",", e.EntityValidationErrors.Select(x => x.ValidationErrors.FirstOrDefault()?.PropertyName + ":" + x.ValidationErrors.FirstOrDefault()?.ErrorMessage));
                    return(Json(new { success = false, err = errormessage }, JsonRequestBehavior.AllowGet));
                }
                catch (Exception e)
                {
                    return(Json(new { success = false, err = e.GetBaseException().Message }, JsonRequestBehavior.AllowGet));
                }
                //DisplaySuccessMessage("Has update a menuItem record");
            }
            else
            {
                var modelStateErrors = string.Join(",", ModelState.Keys.SelectMany(key => ModelState[key].Errors.Select(n => n.ErrorMessage)));
                return(Json(new { success = false, err = modelStateErrors }, JsonRequestBehavior.AllowGet));
                //DisplayErrorMessage(modelStateErrors);
            }
            //var menuitemRepository = this.unitOfWork.RepositoryAsync<MenuItem>();
            //ViewBag.ParentId = new SelectList(await menuitemRepository.Queryable().OrderBy(n=>n.Title).ToListAsync(), "Id", "Title", menuItem.ParentId);
            //return View(menuItem);
        }