Я являюсь частью пути реализации собственного приложения CAPTCHA (т. Е. Не reCaptcha) в своем приложении. Я построил его по строкам книги Сандерсона, Pro ASP.NET MVC Framework. Он построен в класс HtmlHelper, так что я могу назвать это, на мой взгляд, какASP.NET MVC - Как визуализировать метод HtmlHelper в контроллере?
<%= Html.Captcha("nameOfGeneratedCaptchaIdField")%>
Однако, чтобы использовать это я нужен способ, чтобы позволить это повторно поколение. Если вы не можете прочитать это, нажмите [здесь].
Это [здесь] Я хочу быть управляющим действием, которое генерирует изображение captcha и возвращает обратно html. (Я буду использовать это в ссылке Ajax.ActionLink.)
Но мне трудно понять, как это сделать в моем контроллере. Как я могу получить ручку на HtmlHelper, что требуется по HtmlHelper
public ActionResult RegenerateCaptcha(string name)
{
var myHtmlHelper = ???;
var newCaptcha = Captcha.Helpers.CaptchaHelper.Captcha(myHtmlHelper, name);
if (Request.IsAjaxRequest())
{
return Content(newCaptcha.ToString());
}
else
{
return Content(newCaptcha.ToString());
}
}
Мой Captcha Helper закодирован как:
// this is invoked in a view by <%= Html.Captcha("myCaptcha") %>
public static string Captcha(this HtmlHelper html, string name)
{
// Pick a GUID to represent this challenge
string challengeGuid = Guid.NewGuid().ToString();
// Generate and store a random solution text
var session = html.ViewContext.HttpContext.Session;
session[SessionKeyPrefix + challengeGuid] = MakeRandomSolution();
// Render an <IMG> tag for the distorted text,
var urlHelper = new UrlHelper(html.ViewContext.RequestContext);
string url = urlHelper.Action("Render", "CaptchaImage", new{challengeGuid});
// fill it with a newly rendered image url,
// plus a hidden field to contain the challenge GUID
return string.Format(ImgFormat, name, challengeGuid, url);
}
Я предполагаю, что я просто не могу скопировать, что из Helper и вставить его в мой контроллер действия, но это кажется немного гетто ...
Спасибо.
http://stackoverflow.com/questions/621235/using-htmlhelper-in-a-controller – womp