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)); }
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")); }