About .NET, ASP.NET, MVC, C#, WPF, WCF and everything related to .NET and more.

Captcha Mvc [ Начало работы]

Для начала работы с Captcha Mvc вам необходимо:

  • Загрузить последнюю версию с сайта или из nuget (CaptchaMvc.Mvc3 or CaptchaMvc.Mvc4).
  • Добавить ссылку на библиотеку CaptchaMvc.dll в ваш проект.
  • Включить пространство имен расширяющих методов (@using CaptchaMvc.HtmlHelpers) для ваших view.
Теперь можно использовать расширяющие методы для создания капчи. Есть два вида капчи, обычная и математическая.

Методы для создания обычной капчи:

  • Html.Captcha(int, params ParameterModel[]) - принимает только количество символов для генерации капчи. Поле ввода не обязательное, текст для поля ввода будет равен 'Input symbols' и текст кнопки для обновления равен 'Refresh'.
  • Html.Captcha(string, string, int, params ParameterModel[]) - поле ввода не обязательное, текст для поля ввода будет равен второму аргументу, а текст кнопки для обновления равен первому аргументу, количество символ капчи равно третьему аргументу.
  • Html.Captcha(string, string, int, string, params ParameterModel[]) - поле ввода обязательное и сообщение об ошибке равно четвертому аргументу, текст для поля ввода будет равен второму аргументу, а текст кнопки для обновления равен первому аргументу, количество символ капчи равно третьему аргументу.
  • Html.Captcha(int, string, ViewDataDictionary = null, params ParameterModel[]) - количество символ капчи равно первому аргументу, второй аргумент принимает название partial-view для отображения капчи. Третий аргумент принимает экземпляр класса ViewDataDictionary для partial-view.
  • Html.Captcha(int, string, string, ViewDataDictionary = null, params ParameterModel[]) - количество символ капчи равно первому аргументу, второй аргумент принимает название partial-view для отображения капчи, третий аргумент принимает название partial-view для отображения скриптов для капчи. Четвертый аргумент принимает экземпляр класса ViewDataDictionary для partial-view.

Методы для создания математической капчи:

  • Html.MathCaptcha(params ParameterModel[]) - поле ввода не обязательное, текст для поля ввода будет равен 'The answer is' и текст кнопки для обновления равен 'Refresh'.
  • Html.MathCaptcha(string, string, params ParameterModel[]) - поле ввода не обязательное, текст для поля ввода будет равен второму аргументу, а текст кнопки для обновления равен первому аргументу.
  • Html.MathCaptcha(string, string, string, params ParameterModel[]) - поле ввода обязательное и сообщение об ошибке равно третьему аргументу, текст для поля ввода будет равен второму аргументу, а текст кнопки для обновления равен первому аргументу.
  • Html.MathCaptcha(string, ViewDataDictionary = null, params ParameterModel[]) - первый аргумент принимает название partial-view для отображения капчи. Второй аргумент принимает экземпляр класса ViewDataDictionary для partial-view.
  • Html.MathCaptcha(string, string, ViewDataDictionary = null, params ParameterModel[]) - первый аргумент принимает название partial-view для отображения капчи, второй аргумент принимает название partial-view для отображения скриптов для капчи. Третий аргумент принимает экземпляр класса ViewDataDictionary для partial-view.
* Как вы могли заметить все методы принимают массив ParameterModel[], это не обязательный параметр, но если вы хотите изменить поведение по умолчанию, этот параметр может вам пригодиться, далее будут рассмотрены примеры, где мы будем его использовать.

Как проверить что капча введена верно?

Все очень просто, есть два способа сделать это.
Пример с использованием атрибута для проверки капчи:
        [CaptchaMvc.Attributes.CaptchaVerify("Captcha is not valid")]
        [HttpPost]
        public ActionResult MathCaptcha(string empty)
        {
            if (ModelState.IsValid)
            {
                TempData["Message"] = "Message: captcha is valid.";
                return View();
            }

            TempData["ErrorMessage"] = "Error: captcha is not valid.";
            return View();
        }
Пример с использованием расширяющего метода для ControllerBase:
        [HttpPost]
        public ActionResult Index(string empty)
        {
            if (this.IsCaptchaValid("Captcha is not valid"))
            {
                TempData["Message"] = "Message: captcha is valid.";
                return View();
            }

            TempData["ErrorMessage"] = "Error: captcha is not valid.";
            return View();
        }
На этом мы закончим введение, и рассмотрим более подробно, как работает капча и способы ее расширения.

Комментарии

Не совсем понятно как на стороне вьюхи показать что произошла ошибка ввода кода.

Оставить комментарий
*bold*
_italics_
+underline+
* Bullet List
** Bullet List 2
# Number List
## Number List 2
{"Do not apply formatting"}
{code:language} code here {code:language}.
Supports: aspx c#, c#, c++, html, sql, xml
[url:http://www.example.com]