Пример #1
0
        public async Task <IActionResult> Put(string id, EditVmViewModel viewModel)
        {
            var vm = await _vmManager.GetVmById(id);

            if (vm is null)
            {
                return(NotFound());
            }

            vm.Name = viewModel.Name;
            if (vm.GetType() == typeof(ExtendedVm))
            {
                ((ExtendedVm)vm).Comment = viewModel.Comment;
            }

            try
            {
                await _vmManager.UpdateVm(vm);

                return(NoContent());
            }
            catch (ArgumentException e)
            {
                ModelState.AddModelError("error", e.Message);
            }

            return(BadRequest(ModelState));
        }
Пример #2
0
        public async Task <IActionResult> Edit(EditVmViewModel viewModel)
        {
//            var vm = _vmManager.GetVmById(viewModel.Id).Result;
//            vm.Name = viewModel.Name;
//            if (vm.GetType() == typeof(ExtendedVm))
//            {
//                ((ExtendedVm) vm).Comment = viewModel.Comment;
//            }
//
//            try
//            {
//                _vmManager.UpdateVm(vm);
//            }
//            catch (ArgumentException e)
//            {
//                ModelState.AddModelError("", e.Message);
//                return View(viewModel);
//            }
//
//            return RedirectToAction("All", "Vm");
            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }
            var cookieContainer = new CookieContainer();

            using (var handler = new HttpClientHandler {
                CookieContainer = cookieContainer
            })
                using (var client = new HttpClient(handler)
                {
                    BaseAddress = _baseAddress
                })
                {
                    var content = new FormUrlEncodedContent(new[]
                    {
                        new KeyValuePair <string, string>("id", viewModel.Id),
                        new KeyValuePair <string, string>("name", viewModel.Name),
                        new KeyValuePair <string, string>("comment", viewModel.Comment)
                    });
                    var result = await client.PutAsync($"/api/vm/{viewModel.Id}", content);

                    //var vm = JsonConvert.DeserializeObject<Vm>(await result.Content.ReadAsStringAsync());
                    if (result.StatusCode == HttpStatusCode.NoContent)
                    {
                        return(RedirectToAction("All"));
                    }
                    ModelState.AddModelError("error", $"Cannot edit");
                    return(View(viewModel));
                }

            return(RedirectToAction("All"));
        }