Je suis en train de mettre en œuvre une solution native CAPTCHA (c'est-à-dire non reCaptcha) dans mon application. Je l'ai construit sur le modèle du livre de Sanderson, Pro ASP.NET MVC Framework. Il est construit dans une classe HtmlHelper pour que je puisse l'appeler à mon avis commeASP.NET MVC - Comment rendre une méthode HtmlHelper dans un contrôleur?
<%= Html.Captcha("nameOfGeneratedCaptchaIdField")%>
Cependant, pour utiliser cela, je vais avoir besoin d'un moyen de permettre cela re-génération. Si vous ne pouvez pas lire ceci, cliquez sur [ici].
Ceci [ici] Je veux être une action de contrôleur qui génère l'image de captcha et crache le html. (Je vais utiliser ceci dans un lien Ajax.ActionLink.)
Mais j'ai du mal à trouver comment faire cela dans mon contrôleur. Comment puis-je obtenir une poignée sur le HtmlHelper qui est requis par un 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());
}
}
Mon Captcha Helper est codé comme:
// 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);
}
Je suppose que je peux copier que de l'aide et le coller dans mon action de contrôleur, mais cela semble un peu ghetto ...
Merci.
http://stackoverflow.com/questions/621235/using-htmlhelper-in-a-controller – womp