Что вы должны сделать, это следующее:
<form runat="server"></form>
Должен быть обернут вокруг всего содержимого вашей страницы, в вашем случае - на главной странице, поскольку здесь также есть логин.
С этого момента вы можете просто удалить элемент управления recaptcha на любой странице, которая получена из данной главной страницы. Вам больше не нужен ни один тег <form runat="server"></form>
.
Вы должны понимать, что элемент управления recaptcha не привязан ни к кнопке html формы отправки , ни к какой-либо другой определенной кнопке. Каждый раз, когда страница отправляет обратно, recaptcha устанавливает флаг Page.IsValid
.
К сожалению, recaptcha не соответствует стандартам ASP.NET, используя инициируемую проверку в сочетании с группами проверки.
Таким образом, чтобы предотвратить повторную проверку recaptcha, вы должны установить: SkipRecaptcha = true
Это приводит к тому, что recaptcha не проверяется. Итак, теперь сценарий входа покрыт. Когда вы действительно хотите использовать функциональность recaptcha, вы просто устанавливаете SkipRecaptcha = false
и вызываете Page.Validate()
. После этого вы можете продолжить, как и раньше, с Page.IsValid
.
Более чистым и лучшим подходом было бы переписать элемент управления recaptcha с использованием класса BaseValidator
. Это позволит вам указать группу проверки в элементе управления recaptcha и кнопку, которая отправляет входные данные, которые вы хотите защитить, через recaptcha. В этом случае нажатие кнопки приведет только к проверке указанной группы проверки.
Кроме того, вы должны указать группу проверки для кнопки входа в систему или установить CausesValidation = false
. Если группа проверки не установлена и кнопка будет нажата, все группы проверки будут проверены автоматически.
Это, однако, достаточно продвинуто, так что даже ребята из recaptcha отказались от этого, хотя в системе контроля версий все еще есть старая версия. Нет гарантии, что эта версия все еще работает. Дайте нам знать, как вы решили.