Как предотвратить PostBack на стороне клиента? - PullRequest
3 голосов
/ 11 июня 2010

У меня есть некоторый проверочный код JS на клиенте, который должен быть выполнен перед PostBackЕсли этот код проверки возвращает «ложь», обратная передача не нужна.Как это можно отключить?

Ответы [ 5 ]

4 голосов
/ 11 июня 2010

Помните, что реальная проверка должна всегда происходить на сервере. Все, что вы делаете на стороне клиента, - это просто оптимизация, чтобы сэкономить несколько http-циклов.

Самый простой способ синхронизировать проверку на стороне клиента и на стороне сервера с ASP.Net - использовать элементы управления проверкой. Элементы управления проверкой будут выполнять проверку как на стороне клиента, так и на стороне сервера таким образом, что если проверка на клиенте завершится неудачей, она никогда не отправит сообщение на сервер.

Если вы хотите сделать что-то, на что не распространяются стандартные элементы управления валидацией, вы должны либо использовать CustomValidator, либо наследовать свой собственный элемент управления от BaseValidator.

3 голосов
/ 11 июня 2010

Установите OnClientClick = 'YourJSValidationFunction' на кнопке ASP.

Затем функция YourJSValidationFunction возвращает значение true или false.

False предотвратит обратную передачу

Пример: http://vijaymodi.wordpress.com/2007/06/08/button-onclick-and-onclientclick-2/

2 голосов
/ 11 июня 2010

Если постбэк запускается кнопкой, вы можете сделать что-то вроде этого:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return IsValid();" />

Если функция IsValid возвращает false, обратная передача будет запрещена.Если вы хотите перехватить все постбэки независимо от того, какой элемент управления их запускает, вы можете использовать<form id="form1" runat="server" onsubmit="return IsValid();">

0 голосов
/ 11 июня 2010

В зависимости от попытки проверки вы также можете использовать элемент управления CustomValidator. Это также позволит вам легко реализовать логику проверки на стороне сервера.

0 голосов
/ 11 июня 2010

Что вы используете: какой-нибудь валидатор или какая-то кнопка с событием onclick? Если у вас есть

<input type="button" id="btnID" runat="server" onclick="CheckValid();"/>

function CheckValid()
{
   if(!IsValid) return false;//then no post back occer
}
...