ASP.NET MVC Url.Action для рендеринга кода кода Captcha, вызываемого только один раз и только на странице обновления в браузере

У меня проблема с изображением капчи, которое должно отображаться на странице cshtml. Когда пользователь должен зайти на сайт, он сначала должен ввести в текстовое поле символы с картинки в коде с картинки. Это код в моем контроллере учетной записи:

 public FileStreamResult GetImage()
        {
            int width = 200;
            int height = 60;
            Extensions.Captcha captcha = new Extensions.Captcha();

            var captchaCode = captcha.GenerateCaptchaCode();

            var result = captcha.GenerateCaptchaImage(width, height, captchaCode);

            System.Web.HttpContext.Current.Session["CaptchaCode"] = result.CaptchaCode;

            Stream s = new MemoryStream(result.CaptchaByteData);

            return new FileStreamResult(s, "image/png");
        }
This is on razor view image:
@using (Html.BeginForm("Login", "Account", FormMethod.Post, new { @class = "form", autocomplete = "off" }))
                {
                    //var imgUrl = Url.Content("~/Account/GetImage");


                    var imgUrl = Url.Action("GetImage", "Account");


                    <img alt="" src="@imgUrl" />
                    @Html.TextBoxFor(m=>m.CaptchaCode, new { @class = "login", placeholder = "Captcha code" })
}

Когда пользователь сначала вводит неправильный код Captcha в Account Controller, вызывается метод GetImage, но после этого метод GetImage не вызывался. Это часть моего метода Войти в Account Controller:

 if (ModelState.IsValid)
                {

                    if (model.CaptchaCode != System.Web.HttpContext.Current.Session["CaptchaCode"].ToString())
                    {
                        ViewBag.IsVerified = "Verify failed";


                        //return View("Login");
                        System.Web.HttpContext.Current.Session["CaptchaCode"] = null;
                        return RedirectToAction("Login", "Account");
                    }
}

Спасибо за любую помощь!

0 ответов

Другие вопросы по тегам