Add Validation to a Model State and Show Error in field (server side validation)



on This Example Add Validation to OrderOverviewModel > AdditionalInfo.DeliveryDate

OrderOverviewModel > AdditionalInfo.DeliveryDate


        private void ValidateRequestedDeliveryDate(OrderOverviewModel model)
         {            
            var basket = ShopApi.Basket.GetCurrentBasket(false) as Basket;
            var deliveryDate = (Date)model.AdditionalInfo.DeliveryDate;
 
            var deliveryDateModel = ((ExtendedOrderManager)CommerceFrameworkBase.Orders).SetDeliveryDateModel(basket.DeliveryCalendarDates);                       
            var requestedDateContainOnDissableDatesList = deliveryDateModel.Holidays.Contains(deliveryDate);
 
            // Validate user Enterd Delivery not in Disable dates 
            if (requestedDateContainOnDissableDatesList)
            {
                ((ExtendedAdditionalInfoModel)model.AdditionalInfo).DisableDays = deliveryDateModel.HolidaysStringList;
                ((ExtendedAdditionalInfoModel)model.AdditionalInfo).DeliveryLookupPeriod = deliveryDateModel.DeliveryLookupPeriod;
 
                // Set requested date as NextPossibleDeliveryDate. when validation occured.
                ((ExtendedAdditionalInfoModel)model.AdditionalInfo).NextPossibleDeliveryDate = deliveryDate.ToShortDateString();
 
                // Set Cut off time validatation to Model State.
                var validationCutOff = CommerceFrameworkBase.SanaTexts.GetSanaText("Validation_CutOff", "Requested delivery date is invalid or the cut off time has been missed.");
                ModelState.AddModelError("AdditionalInfo.DeliveryDate", validationCutOff);
            } 

        } 

public override ActionResult OrderOverview(OrderOverviewModel model)
        {
            var incompleteStepUrl = GetFirstIncompleteStepUrl(OrderOverviewCheckoutStep.StepId);
            if (!incompleteStepUrl.IsEmptyString())
                return Redirect(incompleteStepUrl);
 
            // Ticket 79457: [Wave 2] 3.5. CUT-OFF TIME FOR DELIVERY
            ValidateRequestedDeliveryDate(model);
 
            if (!ModelState.IsValid)
            {
                var info = InitializeStep(OrderOverviewCheckoutStep.StepId);
                model.InitializeGeneral(Shop, info.Value);
                model.PageSettings = GetSystemPageSettings(SystemPagesConstants.CheckoutPages);
                return View(model);
            }
            ModifyBasket(model.ApplyChanges);
            return GoToNextCheckoutStep(OrderOverviewCheckoutStep.StepId);
        }