public ActionResult Update(OrderViewModel model) { var result = new OrderViewModel(); var validator = new OrderViewModelValidator(); var validationResult = validator.Validate(new ValidationContext<OrderViewModel>(model, new PropertyChain(), new RulesetValidatorSelector("update"))); if (validationResult.IsValid) { var request = model.ConvertToUpdateOrderRequest(); request.IdentityToken = this.FormsAuthentication.GetAuthenticationToken(); var response = this.orderService.UpdateOrder(request); result = response.ConvertToOrderViewModel(); } else { result.MessageType = MessageType.Warning.ToString(); result.BrokenRules = new List<BusinessRule>(); foreach (var failure in validationResult.Errors) { result.BrokenRules.Add(new BusinessRule(failure.PropertyName, failure.ErrorMessage)); } } if (result.Id == 0) { result.Id = model.Id; } if (string.IsNullOrEmpty(result.OrderNumber)) { result.OrderNumber = model.OrderNumber; } if (string.IsNullOrEmpty(result.TrackingNumber)) { result.TrackingNumber = model.TrackingNumber; } if (string.IsNullOrEmpty(result.Status)) { result.Status = model.Status; } var jsonNetResult = new JsonNetResult { Formatting = (Formatting)Newtonsoft.Json.Formatting.Indented, Data = result }; return jsonNetResult; }