#c# #asp.net #onclick #server-side
#c# #asp.net #onclick (включить) #серверная часть #onclick #на стороне сервера
Вопрос:
У меня есть следующий метод onclick на стороне сервера:
protected void btnSearch_Click(object sender, EventArgs e)
{
if (txtSearch.Text == "" || txtSearch.Text.Length < 4) {
//NO POSTBACK HERE
} else {
Response.Redirect(www.google.be);
}
}
Итак, есть ли здесь какой-нибудь совет? Я не могу сделать это на стороне клиента, потому что мне нужно указать параметр на стороне сервера в URL.
Спасибо за помощь
Ответ №1:
почему бы не сделать это на стороне клиента?
<asp:Button ID="btnSearch" OnClientClick="return validateForm();" OnClick="btnSearch_Click" Text="Send" />
и есть метод javascript:
function validateForm(){
if(document.getElementById('<%= txtSearch.ClientID %>').value == '')
return false;
else
return true;
}
Ответ №2:
вы не можете избежать обратной передачи, если вы уже выполняете событие Click на стороне сервера.
альтернативы:
- используйте функцию на стороне клиента для проверки и проверки и вызывайте щелчок на стороне сервера только в определенных случаях или возвращайте false, чтобы избежать этого.
- Используйте метод UpdatePanel, чтобы включить частичную визуализацию и минимизировать влияние обратной передачи. По-прежнему будет обратная передача и весь жизненный цикл страницы, но минимальное мерцание страницы.
в вашем случае, я думаю, вы можете просто делать все на стороне клиента, приведенный выше код легко написать в jQuery.
Комментарии:
1. Но, как я уже сказал, мне нужна переменная на стороне сервера, которую мне нужно указать в URL в качестве параметра. Я не могу одновременно выполнять onclick на стороне клиента и на стороне сервера. Потому что, если я установлю return false; для onclick на стороне клиента, то мой onclick на стороне сервера тоже не работает
2. но в вашем случае, когда txtSearch. Текст имеет значение null или short, вы вернете false и избежите обратной передачи; только в другом случае вы вызовете щелчок на стороне сервера. В любом случае вы даже можете отключить кнопку btnSearch, когда текстовое поле не проверяется правильно.