public async Task<ActionResult> UpdateAddress(string id, shopifyModel.Address formModel) { var contact = WorkContext.CurrentCustomer; var updateContact = false; if (contact != null) { if (string.IsNullOrEmpty(id)) { // Add new address contact.Addresses.Add(formModel.ToWebModel(WorkContext.AllCountries)); updateContact = true; } else { int addressIndex; if (int.TryParse(id, NumberStyles.Integer, CultureInfo.InvariantCulture, out addressIndex)) { if (addressIndex > 0 && addressIndex <= contact.Addresses.Count) { if (string.Equals(formModel.Method, "delete", StringComparison.OrdinalIgnoreCase)) { // Delete address ((List<Address>)contact.Addresses).RemoveAt(addressIndex - 1); updateContact = true; } else { // Update address ((List<Address>)contact.Addresses)[addressIndex].CopyFrom(formModel, WorkContext.AllCountries); updateContact = true; } } } } if (updateContact) { await _customerService.UpdateCustomerAsync(contact); } } return StoreFrontRedirect("~/account/addresses"); }