//protected override DriverResult Display(CaptchaPart part, string displayType, dynamic shapeHelper)
        //{
        //return ContentShape("Parts_Captcha", () =>
        //{
        //    var captchaVM = new CaptchaViewModel();
        //    captchaVM.Src = _captchaService.GenerateCaptcha(captchaVM.Guid.ToString());
        //    var result = shapeHelper.Parts_Captcha(CaptchaVM: captchaVM);
        //    return result;
        //});
        //}

        protected override DriverResult Editor(CaptchaPart part, dynamic shapeHelper)
        {
            var settings = _captchaService.GetSettings();

            if (settings.IsForNotAuthUsersOnly && _httpContextAccessor.Current().Request.IsAuthenticated)
            {
                return(null);
            }

            var captchaEVM = new CaptchaEditViewModel()
            {
                Captcha = _captchaService.GetOrGenerateCaptcha(Guid.NewGuid())
            };

            return(ContentShape("Parts_Captcha_Edit", () => shapeHelper.EditorTemplate(TemplateName: "Parts/Captcha", Model: captchaEVM, Prefix: Prefix)));
        }
        protected override DriverResult Editor(CaptchaPart part, IUpdateModel updater, dynamic shapeHelper)
        {
            var captchaEVM = new CaptchaEditViewModel();

            if (updater.TryUpdateModel(captchaEVM, Prefix, null, null))
            {
                if (_captchaService.IsCaptchaValid(captchaEVM.Captcha.Guid, captchaEVM.Value))
                {
                }
                else
                {
                    updater.AddModelError("Captcha", T("Captcha is invalid."));
                }
            }
            else
            {
                updater.AddModelError("Captcha", T("Captcha error."));
            }
            return(Editor(part, shapeHelper));
        }