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.
Как проверить что капча введена верно?
Все очень просто, есть два способа сделать это.Пример с использованием атрибута для проверки капчи:
[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(); }
[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(); }
Не совсем понятно как на стороне вьюхи показать что произошла ошибка ввода кода.