MVC2 и сессия - PullRequest
       6

MVC2 и сессия

2 голосов
/ 20 сентября 2010

Я использую генератор капчи. http://xcaptcha.codeplex.com/. В этом примере показано использование Session.Add для сравнения сгенерированного капчи с ответом. Я хотел сделать это частью проверки правил моей модели, но я не могу найти / работать с правильными частями сеанса там. Я пропускаю способ перейти к сеансу из GetRuleViolations моей модели? Любые другие советы приветствуются

// Controller
public ActionResult Image()
{
    var builder = new XCaptcha.ImageBuilder();
    var result = builder.Create();
    Session.Add("CaptchaKey", result.Solution);
    return new FileContentResult(result.Image, result.ContentType);
}

// My model
public IEnumerable<RuleViolation> GetRuleViolations()
{
    // This isn't correct... it isn't stored in server variables
    string captchaAnswer = HttpContext.Current.Request.ServerVariables.Get("CaptchaKey");
    // No such thing..
    string res = Session["Something"].ToString();
}

// My eh solution
// Controller
[HttpPost]
public ActionResult ContactUs(EmailModel e, FormCollection collection)
{
    string captchaAnswer = Session["CaptchaKey"].ToString();
    string captchaText = collection["CaptchaText"].ToUpper().ToString();
    bool correctCaptcha = (captchaAnswer.CompareTo(captchaText) == 0) ? true : false;

    if (e.IsValid && correctCaptcha)
    {
        EmailHelper.SendMessage(e);
        return RedirectToAction("ContactSuccess");
    }
    else
    {
        if (!correctCaptcha)
            ModelState.AddModelError("Captcha", "Incorrect Captcha answer");

        ModelState.AddRuleViolations(e.GetRuleViolations());
    }

    return View(e);
}

Ответы [ 2 ]

2 голосов
/ 20 сентября 2010

HttpContext.Current.Session

1 голос
/ 08 ноября 2010

Я только что обновил его. В настоящее время существует версия 2, которая больше не использует сеансы для поддержания состояния и использует проверку на основе модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...