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");
}
}
Спасибо за любую помощь!