private Card GetCardFromViewData(CheckoutViewData checkoutViewData, ModelStateDictionary modelState) { if (checkoutViewData.PayByTelephone) { return(null); } var card = new Card { Holder = checkoutViewData.CardHolder, Number = checkoutViewData.CardNumber, ExpiryMonth = checkoutViewData.CardExpiryMonth, ExpiryYear = checkoutViewData.CardExpiryYear, StartMonth = checkoutViewData.CardStartMonth, StartYear = checkoutViewData.CardStartYear, IssueNumber = checkoutViewData.CardIssueNumber, SecurityCode = checkoutViewData.CardSecurityCode, CardType = checkoutViewData.CardCardType }; DataAnnotationsValidator .Validate(card) .WithPropertyPrefix("Card") .AndUpdate(modelState); // don't attempt to encrypt card if there are any model binding errors. if (modelState.IsValid) { var validator = new Validator { () => encryptionService.EncryptCard(card) }; validator.Validate(modelState); } return(card); }